awk match palavra inteira

4

Eu quero usar awk para corresponder palavras inteiras do arquivo de texto. Incluindo palavras delimitadas por caracteres não alfanuméricos.

Por exemplo -

string para pesquisar - ABC

Arquivo de origem -

HHHABCCCCH
HHH ABC
HH(ABC)ASDAASD
HH,ABC-ASASDASD

Resultado -

HHH ABC
HH(ABC)ASDAASD
HH,ABC-ASASDASD
    
por bryan 21.10.2011 / 17:52

3 respostas

3

Se você deseja passar "ABC" como uma variável em vez de codificá-la, use o operador correspondente:

awk -v word=ABC '$0 ~ "[^[:alpha:]]" word "[^[:alpha:]]"'

Com gawk (outros awks também?) você pode usar \< e \> para denotar limites de palavras, onde uma palavra é uma sequência de letras, dígitos e sublinhados (acredito), então isso funcionará para o seu exemplo :

awk '/\<ABC\>/'
    
por 21.10.2011 / 18:30
2

Descobri que estava tendo problemas devido a um erro de digitação

awk '/[^[:alpha:]]ABC[^[:alpha:]]/'
    
por 21.10.2011 / 18:14
2

Use \y para o limite de palavras, por exemplo,

awk '/\yABC\y/'

Consulte o link para obter mais detalhes.

    
por 05.07.2018 / 10:48