37 votos

Bash, sed, awk, etc. quitar todos los otro newline

un comandos bash salidas esto:

Runtime Name: vmhba2:C0:T3:L14
Group State: active
Runtime Name: vmhba3:C0:T0:L14
Group State: active unoptimized
Runtime Name: vmhba2:C0:T1:L14
Group State: active unoptimized
Runtime Name: vmhba3:C0:T3:L14
Group State: active
Runtime Name: vmhba2:C0:T2:L14
Group State: active

Me gustaría canalizarlo a algo que parezca así:

Runtime Name: vmhba2:C0:T1:L14 Group State: active 
Runtime Name: vmhba3:C0:T3:L14 Group State: active unoptimized
Runtime Name: vmhba2:C0:T2:L14 Group State: active
[...]

es decir, quitar todos los otro newline

Intenté ... |tr "\nGroup" " " pero eliminar los saltos de línea y comieron algunas otras cartas como bien gracias

72voto

marshally Puntos 2260

No se puede probar ahora mismo, pero

... | paste - - 

debería hacerlo

10voto

cyberx86 Puntos 14100

Una posibilidad es:

awk 'ORS=NR%2?" ":"\n"'

Si la línea número es divisible por 2, final con una nueva línea, de lo contrario, terminar con un espacio.

(Probado en: CentOS 6, GNU Awk 3.1.7)

El uso de sed (ver explicación):

sed ':a;N;$!ba;s/\nGroup/ Group/g'

Leer más:

8voto

jason saldo Puntos 5036

Si desea utilizar sed, no hay ninguna razón para leer el archivo de la memoria. Puede combinar cada línea como esta:

sed 'N;s/\n/ /' inputfile

El uso de cualquier personaje que quieras en lugar del espacio.

He aquí otra manera de usar awk:

awk '{printf "%s", $0; if (getline) print " " $0; else printf "\n"}' inputfile

El if/else maneja el caso donde hay un número impar de líneas en el archivo. Sin ella, la extraño última línea se imprime dos veces. De otro modo, para la comparación, se podría hacer:

awk '{printf "%s", $0; getline; print " " $0}'

2voto

jfgagne Puntos 796

En bash:

... | while read l1; do read l2; echo "$l1 $l2"; done

2voto

Bret McMillan Puntos 41

Esto funciona para mí en Linux:

... | tr "\\n" " "

Esto reemplaza a un espacio vacío para un caracter; Usted debe escapar el caracter para que las cosas funcionen correctamente.

EnMiMaquinaFunciona.com

EnMiMaquinaFunciona es una comunidad de administradores de sistemas en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros sysadmin, hacer tus propias preguntas o resolver las de los demás.

Powered by: