
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 cat
canalizar el archivo. grep
Puede leer archivos directamente.
En segundo lugar, -w
hace 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.
grep
devolverá 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 -o
devuelve 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 LANG
configurada 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 sed
para 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.