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 ven así:
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?
Respuesta1
sed 'N;s/\n/ /'
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:
sed -n 'N;s/\n/ /;/regex/p'
-n
desactiva la impresión automática del espacio del patrón como último comando/regex/p
imprime líneas que coinciden con expresiones regulares
Utilice el g
modificador para las sustituciones en caso de que esté uniendo más de dos líneas, por ejemplo N;N;N;s/\n/ /g
.
Respuesta2
Parece que las apt-get
líneas tienen un espacio en blanco delante. Dicho:
sed -e :a -e '$!N;s/\n / /;ta' -e 'P;D' inputfile
debe producir el resultado deseado.
Alternativamente, también puedes usar paste
:
paste -d' ' - - < inputfile