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?

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.


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"

-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"


Você esqueceu -E.
Reinierpost
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.