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?

użytkownik3544092
źródło

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.

heemayl
źródło
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"
Jeff Schaller
źródło
-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”

dmb
źródło
Zapomniałeś -E.
reinierpost