Script Bash com grep -w

Script Bash com grep -w

Estou usando o seguinte comando: x.txt | grep -w 'in' e estou recebendo respostas como: in into ... etc.

Eu só quero a resposta: em

Como devo modificar o comando?

Responder1

Primeiro, o comando deve ser

grep -w in x.txt

Seu canal atual não funciona e é desnecessário para cato arquivo apenas canalizá-lo. greppode ler arquivos diretamente.

Em segundo lugar, o -wfaz exatamente o que você deseja. Na página de manual:

-w, --palavra-regexp

Selecione apenas as linhas que contêm correspondências que formam palavras inteiras. O teste é que a substring correspondente deve estar no início da linha ou precedida por um caractere constituinte que não seja de palavra. Da mesma forma, deve estar no final da linha ou seguido por um caractere constituinte que não seja de palavra. Os caracteres constituintes da palavra são letras, dígitos e sublinhado.

grepretornará olinhas completasonde a palavra ocorre; essa é a função de grep; Menciono isso para garantir que você não fique confuso por causa disso.

Se vocêapenasquiser retornar a palavra, como você diz, você pode fazer

grep -ow in x.txt

since -oretorna apenas a parte correspondente, mas isso parece bastante infrutífero.O que você está realmente tentando fazer?


EDITAR:Um exemplo explícito:

$ cat test
word in word
within word
word word
$ grep -w in test
word in word

"dentro" não é correspondido.

EDITAR2:Outro exemplo:

$ grep '\<in\>' test 
word in word

EDITAR3:Foi dado que o problema estava nos caracteres suecos. Posso reproduzir isso, mesmo com a variável de ambiente LANGdefinida como sv_SE.UTF-8.https://stackoverflow.com/questions/9260293/egrep-accented-characters-not-recognised-as-part-of-a-wordsugere usar Perl para tarefas específicas de UTF-8 como a solução mais fácil.


EDITAR4:Parece que posso usar sedpara fazer isso funcionar com caracteres suecos:

$ cat test
word den word
avträden word
word word
$ sed -n '/\bden\b/p' test
word den word
$ sed -n '/\<den\>/p' test
word den word

É uma solução pragmática, mas espero que funcione para esta tarefa.

informação relacionada