2011-06-09 11 views
8

Tengo un archivo .txt creado en Windows y ahora debería ser editado en Linux. Quiero unir el final de una línea con grep, digamos que el contenido de la línea que voy a encontrar es "foo bar" en el archivo bar. Luego ejecuto el comando grep 'r$' bar, no se obtiene salida.¿Cómo usar el final de la línea de expresión regex en Windows?

Dado en Windows una nueva línea consiste en '\ r \ n', diferente de Linux/Unix una sola '\ n', creo que debe haber algo sutil relacionado con esto. Luego convierto el archivo con dos2unix y listo, funciona.

Mi pregunta es ¿cómo puedo unir el contenido sin convertir el archivo original?

Cualquier consejo será muy apreciado.

Gracias y Saludos cordiales.

+0

Puesto que usted ha hecho esta, grep de GNU parece han solucionado este problema, aparentemente eliminando por completo los caracteres de retorno de carro. –

Respuesta

7

Si su grep soporta -P (perl-regexp), entonces para que coincida con un CRLF:

grep -P '\r$' file 

o:

grep Ctrl + VCtrl + M archivo

(Ctrl + VCtrl + M producirá ^M)

6

Utilice un patrón con partidos tanto en línea termina: r\r?\n

-1

darle una oportunidad awk

awk '/r$/' RS='\r\n' bar 

o

awk '/r\r$/' bar 
Cuestiones relacionadas