o caminho do comando grep \ e \ work

0

myfile.txt contém o seguinte:

hello (ab)
hello ab
hello abcd

Eu tentei o seguinte comando:

$grep '\<ab\>' myfile.txt

\< significa o começo de uma palavra e \> significa fim de palavra.

Então, pensei que meu comando grep é equivalente a $grep ' ab ' myfile.txt Eu esperava que minha saída fosse

hello ab

Mas corresponde:

hello (ab)
hello ab

Como uma palavra é definida? É uma string com um espaço à frente e mais um espaço seguindo a string?

    
por Mint.K 29.01.2017 / 02:08

1 resposta

4

De man grep

% bl0ck_qu0te%

Em outras palavras, uma palavra é uma sequência de caracteres alfanuméricos e sublinhados, e um limite de palavras é a sequência vazia antes ou depois de qualquer outra coisa - incluindo pontuação como ( e ) , bem como espaço em branco. Então:

$ echo 'word-boundary' | grep -o '\<\w*\>'
word
boundary

$ echo 'word_boundary' | grep -o '\<\w*\>'
word_boundary

$ echo 'word(bound)ary' | grep -o '\<\w*\>'
word
bound
ary

Para obter mais informações, consulte Tutorial do Regex - Limites do Word .

    
por steeldriver 29.01.2017 / 02:19