Pregunta Eliminar CR y LF en Linux


¿Cómo puedo eliminar con sed todos los CR y LF del archivo de texto (líneas de unión)?


2


origen




Respuestas:


tr -d '\n\r' < file

5



la solución obviamente más fácil - akira


Puedes usar \r y \n, dependiendo de su sistema operativo.

\r\n funciona en windows, \n funciona en la mayoría de * nixes, pero reemplazarlo con una cadena en blanco debería unir sus líneas perfectamente.


1



La pregunta es bastante sed específico (etiqueta y título). Aprender patrones simples o recetas de sed ayuda a desarrollar una comprensión para manejar casos más complejos. - mctylr
@mctylr; ¿Asi que? Regex es regex, ya sea que lo estés utilizando en sed o perl. Simplemente señalando la op en el patrón que desean unir les ayudará mucho más que un comando de copiar y pegar, imo. - Phoshi
Consulte la página 23 de Dominio de expresiones regulares oreilly.com/catalog/9780596528126/preview o "Diferentes motores de expresión regular" en regular-expressions.info/tutorial.html o php.net/manual/en/reference.pcre.pattern.differences.php - mctylr
@mctylr; Por supuesto, me doy cuenta de las diferencias en la implementación, sin embargo, coincidencia un personaje único y conocido no cambia entre implementaciones. \ r \ n es \ r \ n independientemente de quién pregunte, esto no es algo bajo el control de cómo se implementa el motor. - Phoshi


Estoy de acuerdo con Dennis Williamson ... aquí hay otra alternativa:

perl -0pe 's/[\r\n]//g' < in > out

¿Por qué tantas preguntas incluyen "con sed"? Sí uso sed, pero no peleo sus limitaciones.


1





En un sistema Unix / Linux, creo que esto funcionará para usted. Lo probé con GNU sed, pero no creo que esto esté usando extensiones de GNU.

sed -e :a -e '/$/N; s/\r\n//; ta;' <in.txt >out.txt

0



Si lo cambia para que cr y nl estén entre corchetes, funcionará incluso si falta uno u otro o están en el orden opuesto: [\r\n] - Dennis Williamson
Sí, entonces depende si uno se preocupa por eliminar todo \r y \n personajes, o solo \r\n "pares". Diferentes casos pueden tener diferentes respuestas. Pero muy buen punto, gracias. - mctylr
Casi increíble que en todo este tiempo nadie haya sugerido sed | sed como una solución. Nadie discute el requisito de pulsación ctrl-V ctrl-M (ala vi)? Supongo que las manos viejas saben y dejan de preguntar ... - mckenzm