0 votos

Problema de sintaxis de grep en Lion

Tengo un archivo de texto y busco la línea única bird . Usando OS X Lion y grep 2.5.1.

esto funciona:

grep '^bird' file.txt

pero esto no

grep '^bird$' file.txt

No hay un espacio en blanco al final de la línea. ¿Qué estoy haciendo mal?

gracias

5voto

Quassnoi Puntos 101

Suele ser debido a un archivo de texto con formato DOS (CRLF). Para limpiar el archivo puede instalar un tooö como dos2unix pero normalmente funciona de forma más sencilla utilizando el tr herramienta:

tr -d '\r' < testfile > output.txt

4voto

SmartyP Puntos 610

Supongo que es un archivo CRLF (archivo de texto con formato dos)

[bob@erasmas tmp]$ cat testfile
bird
notbird
[bob@erasmas tmp]$ cat testfile.dos
bird
notbird
[bob@erasmas tmp]$ file testfile
testfile: ASCII text
[bob@erasmas tmp]$ file testfile.dos
testfile.dos: ASCII text, with CRLF line terminators
[bob@erasmas tmp]$ grep '^bird' testfile
bird
[bob@erasmas tmp]$ grep '^bird' testfile.dos
bird
[bob@erasmas tmp]$ grep '^bird$' testfile
bird
[bob@erasmas tmp]$ grep '^bird$' testfile.dos

Nota: Esto fue en una máquina Linux, ya que esto no es específico de OS X (si este es de hecho el problema).

Ejecute "archivo" en archivo.txt y vea si tiene finales de línea CRLF.

1voto

Italoargentino Puntos 26

Si desea mantener el formato de MS-DOS, puede insertar el retorno de carro de MS-DOS dentro del patrón. En linux presiono CTRL-V CTRL-M para producir el literal ^M que representa el CR de MS-DOS (a veces señalado como \r ). Espero que en OS X encuentres cómo producir el CR literal.

grep --color=none "^bird^M$"

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X