GNU/Linux >> Linux Esercitazione >  >> Linux

sed unisce le linee insieme

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

In un ciclo (ramo ba per etichettare :a ), se la riga corrente termina con 0 (/0$/ ) aggiunge la riga successiva (N ) e rimuovere la nuova riga interna (s/\n// ).

awk:

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

Perl:

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

bash:

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

anche awk potrebbe essere breve:

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

prova:

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

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

Linux
  1. Corrispondenza di pattern multilinea utilizzando Sed, Awk o Grep?

  2. Awk da linee diverse?

  3. Mostra tutte le righe prima di una partita?

  4. Prima lettera maiuscola delle parole usando SED

  5. Rimuovi le righe vuote in un file di testo tramite grep

Come unire più righe in una in un file in Linux

Come rimuovere le righe da un file usando il comando Sed

Come eliminare le righe vuote nei file utilizzando Grep, Sed e Awk

Tutorial Regex per esempi di Linux (Sed e AWK).

Come sottrarre righe (linee) con AWK

Come modificare un file sul posto usando awk? (come con sed -i)