encontrando uma palavra em uma string

3

Eu quero encontrar a palavra abc em uma string (eu quero apenas a palavra exata abc, não palavras que contenham abc), mas recebo o seguinte erro:

echo "asjhdhahsjdajhsdabcasjdhas abc asdasdabc" | grep <abc>

bash: erro de sintaxe próximo do token inesperado 'newline'

    
por Farhad 31.10.2016 / 20:44

1 resposta

6

Você deseja que -o (mostre apenas a string correspondente) e -w (corresponda somente com o padrão como um todo)

$ echo "asjhdhahsjdajhsdabcasjdhas abc asdasdabc" | grep -ow abc
abc

Obrigado ao steeldriver por explicar como você pode realmente usar o < e > em vez de -w para indicar limites de palavras. Eles devem ser \< e \> , mas as barras invertidas devem ser citadas para serem passadas para o grep, bem como os símbolos < , pois eles também têm um significado especial para o shell. Então, cite bem a expressão assim:

echo "asjhdhahsjdajhsdabcasjdhas abc asdasdabc" | grep -o '\<abc\>'

ou enlouqueça com as barras invertidas:

echo "asjhdhahsjdajhsdabcasjdhas abc asdasdabc" | grep -o \\<abc\\>
    
por Zanna 31.10.2016 / 20:56