Como grep palavra exata com apenas espaço como separador de palavras

4

Por exemplo: tenho um arquivo como o seguinte:

AA ABC-AA-AA
AAA ABC-AA
ABC.AA ABC
AA ABC.A AA

Se eu usar grep -w "ABC" file1 , estou recebendo todas as linhas.

Mas devo apenas obter a terceira linha: ABC.AA ABC

Ele está usando . e - como separadores de palavras. Mas preciso apenas de espaço como separador de palavras.

    
por GP92 24.02.2015 / 11:36

1 resposta

8

De (GNU) grep(1) página man:

-w, --word-regexp

Select only those lines containing matches that form whole words. The test is that the matching substring must either be at the beginning of the line, or preceded by a non-word constituent character. Similarly, it must be either at the end of the line or followed by a non-word constituent character. Word-constituent characters are letters, digits, and the underscore.

Assim, você precisará solicitar explicitamente os espaços (ou começos e / ou fins de linha) para estarem lá:

grep -E '(^| )ABC( |$)' file1

Se você também quiser incluir outros caracteres de espaço em branco, substitua os espaços acima por um conjunto maior, por exemplo, [[:space:]] (novamente veja a página grep(1) man).

    
por 24.02.2015 / 11:49