Nie można znaleźć moich danych wejściowych w ciągu za pomocą grep


11

Mam ciąg oddzielony przecinkami, w których chcę znaleźć dane wejściowe w tym wierszu:

echo US | grep "US,CA,CH,JP"

Wyjście jest puste! Jak powinienem użyć grep, aby znaleźć moje dane wejściowe w tym ciągu?

Odpowiedzi:


18

Zamień argumenty poleceń:

echo "US,CA,CH,JP" | grep US

W:

echo US | grep "US,CA,CH,JP"

szukasz ciągu (wzorca) US,CA,CH,JPw ciągu wejściowym US, który nie jest zgodny z oczekiwaniami.


14

O ile nie spodziewałeś się, że przecinki będą działać jak instrukcja „lub”, w takim przypadku wystarczy zmienić przecinki na potoki i użyć -Eopcji dla Rozszerzonych wyrażeń regularnych:

echo US | grep -E "US|CA|CH|JP"

Lub zmień przecinki na znaki nowej linii:

echo US | grep "US
CA
CH
JP"

-1

użyłbym $echo US | grep -i "US|CA|JP|CH"

Zamiast eko daj mu listę lub coś, gdzie może faktycznie szukać wzorów, zamiast szukać ich w „US”


Zapomniałeś -E.
reinierpost
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.