Script bash con grep -w

Script bash con grep -w

Estoy usando el siguiente comando: x.txt | grep -w 'in' y obtengo respuestas como: in into... etc.

Sólo quiero la respuesta: en

¿Cómo debo modificar el comando?

Respuesta1

Primero, el comando debe ser

grep -w in x.txt

Su canalización actual no funciona y no es necesario catcanalizar el archivo. grepPuede leer archivos directamente.

En segundo lugar, -whace exactamente lo que quieres. Desde la página de manual:

-w, --palabra-regexp

Seleccione sólo aquellas líneas que contengan coincidencias que formen palabras completas. La prueba es que la subcadena coincidente debe estar al principio de la línea o precedida por un carácter constituyente que no sea una palabra. De manera similar, debe estar al final de la línea o seguido de un carácter constituyente que no sea una palabra. Los caracteres que constituyen una palabra son letras, dígitos y guiones bajos.

grepdevolverá ellineas completasSin embargo, donde aparece la palabra; esa es la función de grep; Lo menciono para comprobar que no os confundís por eso.

Si ustedjustoquieres devolver la palabra, como dices, puedes hacerlo

grep -ow in x.txt

puesto que -odevuelve sólo la parte coincidente, pero eso parece bastante infructuoso.¿Qué estás tratando de hacer realmente?


EDITAR:Un ejemplo explícito:

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

"dentro" no coincide.

EDITAR2:Otro ejemplo:

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

EDITAR3:Se dio que el problema estaba en los caracteres suecos. Puedo reproducir esto, incluso con la variable de entorno LANGconfigurada en sv_SE.UTF-8.https://stackoverflow.com/questions/9260293/egrep-accented-characters-not-recognised-as-part-of-a-wordsugiere usar Perl para tareas específicas de UTF-8 como la solución más sencilla.


EDITAR4:Parece que puedo utilizarlo sedpara que esto funcione con 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

Es una solución pragmática, pero es de esperar que funcione para esta tarea.

información relacionada