problema de sintaxis grep en Lion

0

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 lo hace

grep '^bird$' file.txt

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

thx

    
pregunta timpone 18.01.2012 - 19:51

3 respuestas

5

Generalmente se debe a un archivo de texto con formato DOS (CRLF). Para limpiar el archivo, puede instalar un tooö como dos2unix ; pero usualmente funciona incluso más simple usando la herramienta tr :

tr -d '\r' < testfile > output.txt
    
respondido por el Mattias Ahnberg 18.01.2012 - 20:37
4

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 estaba en una máquina Linux, ya que no es específico de OS X (si esto no es así, el problema).

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

    
respondido por el rjewell 18.01.2012 - 20:13
1

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 anotado como \r ). Espero que en OS X encuentre la forma de producir el CR literal.

grep --color=none "^bird^M$"
    
respondido por el olibre 18.01.2012 - 22:58

Lea otras preguntas en las etiquetas