GNU/Linux >> Tutoriales Linux >  >> Linux

sed unir líneas

 sed ':a;/0$/{N;s/\n//;ba}'

En un bucle (rama ba para etiquetar :a ), si la línea actual termina en 0 (/0$/ ) agregar la siguiente línea (N ) y elimine la nueva línea interna (s/\n// ).

awk:

awk '{while(/0$/) { getline a; $0=$0 a; sub(/\n/,_) }; print}'

Perl:

perl -pe '$_.=<>,s/\n// while /0$/'

golpe:

while read line; do 
    if [ ${line: -1:1} != "0" ] ; then 
        echo $line
    else echo -n $line
fi
done 

awk también podría ser corto:

awk '!/0$/{printf $0}/0$/'

prueba:

kent$  cat t
#aasdfasdf
#asbbb0
#asf
#asdf0
#xxxxxx
#bar

kent$  awk '!/0$/{printf $0}/0$/' t
#aasdfasdf#asbbb0
#asf#asdf0
#xxxxxx#bar 

Linux
  1. ¿Reemplazar rango de líneas con rango de líneas (sed u otros)?

  2. Awk de diferentes líneas?

  3. ¿Mostrar todas las líneas antes de un partido?

  4. Escribir en mayúsculas la primera letra de las palabras usando SED

  5. Eliminar líneas vacías en un archivo de texto a través de grep

Cómo unir varias líneas en una en un archivo en Linux

Cómo quitar líneas de un archivo usando el comando Sed

Cómo eliminar líneas vacías en archivos usando Grep, Sed y Awk

¿Coincidencia de patrones multilínea usando Sed, Awk o Grep?

Tutorial de expresiones regulares para ejemplos de Linux (Sed y AWK)

Reemplazo de SED en varias líneas