Não consigo encontrar minha entrada na string usando grep

11

Eu tenho uma string separada por vírgulas onde quero encontrar minha entrada nessa linha:

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

A saída está vazia! Como devo usar o grep para encontrar minha entrada nessa string?

user3544092
fonte

Respostas:

18

Troque os argumentos dos comandos:

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

Dentro:

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

você está procurando a sequência (padrão) US,CA,CH,JPna sequência de entrada US, que não corresponde exatamente ao esperado.

heemail
fonte
14

A menos que você esperasse que as vírgulas agissem como uma declaração "ou", nesse caso, você só precisa alterá-las para pipes e usar a -Eopção para expressões regulares estendidas :

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

Ou altere as vírgulas para caracteres de nova linha:

echo US | grep "US
CA
CH
JP"
Jeff Schaller
fonte
-1

eu usaria $echo US | grep -i "US|CA|JP|CH"

Em vez de eco, forneça uma lista ou algo assim, onde ele pode ir e procurar padrões, em vez de procurá-los nos "EUA"

dmb
fonte
Você esqueceu -E.
Reinierpost