GNU/Linux >> LINUX-Kenntnisse >  >> Linux

sed Linien zusammenfügen

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

In einer Schleife (Zweig ba um :a zu kennzeichnen ), wenn die aktuelle Zeile mit 0 endet (/0$/ ) nächste Zeile anhängen (N ) und entfernen Sie den inneren Zeilenumbruch (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 

awk könnte auch kurz sein:

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

testen:

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

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

Linux
  1. grep findet nur Zeilen in einem bestimmten Bereich

  2. Löschen Sie leere Zeilen mit sed

  3. Entfernen Sie ungerade oder gerade Zeilen aus einer Textdatei

  4. sed - Zeile nach X Zeilen nach Übereinstimmung einfügen

  5. So subtrahieren Sie Zeilen (Zeilen) mit AWK

So verbinden Sie mehrere Zeilen in einer Datei in Linux zu einer

So entfernen Sie Zeilen aus einer Datei mit dem Sed-Befehl

So löschen Sie leere Zeilen in Dateien mit Grep, Sed und Awk

Regex-Tutorial für Linux-Beispiele (Sed &AWK).

Wie ändere ich eine Datei direkt mit awk? (wie bei sed -i)

SED-Ersetzung über mehrere Zeilen hinweg