Tengo un archivo de texto, donde los registros se dividen en dos líneas. Me gustaría ponerlos en una línea. Los registros se parecen a esto:
2013-07-29
apt-get install git
2013-07-29
apt-get install rsync
2013-07-31
apt-get install nmap
2013-08-02
apt-get install cifs-utils
2013-08-05
apt-get install telnet
Me gustaría obtener lo siguiente:
2013-07-29 apt-get install git
2013-07-29 apt-get install rsync
2013-07-31 apt-get install nmap
2013-08-02 apt-get install cifs-utils
2013-08-05 apt-get install telnet
Lo intenté con sed
, pero no puedo hacer coincidir dos líneas. ¿Hay algún truco sed
o hay alguna herramienta mejor?
text-processing
sed
Martin Vegter
fuente
fuente
Respuestas:
N
une la siguiente línea de entrada al espacio del patróns/\n/ /
reemplaza la nueva línea que separa las líneas con un espacio.o:
-n
deshabilita la impresión automática del espacio del patrón como último comando/regex/p
imprime líneas que coinciden con expresiones regularesUse el
g
modificador para las sustituciones en caso de que esté uniendo más de dos líneas, por ejemploN;N;N;s/\n/ /g
.fuente
sed 's/>\n</>,</'
al trabajo hasta que me di cuenta de que sed funciona en líneas a la vez. una búsqueda rápida de duckduckgo y @peterph me permitieron mantener el resto de mi cabelloParece que las
apt-get
líneas tienen un espacio en blanco precedente. Diciendo:debería producir el resultado deseado.
Alternativamente, también puedes usar
paste
:fuente