GNU/Linux >> Znalost Linux >  >> Linux

sed spojí čáry dohromady

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

Ve smyčce (větev ba k označení :a ), pokud aktuální řádek končí 0 (/0$/ ) připojte další řádek (N ) a odstraňte vnitřní nový řádek (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 může být také krátký:

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

test:

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

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

Linux
  1. Nahradit rozsah řádků rozsahem řádků (sed nebo jiné)?

  2. Velké první písmeno slov pomocí SED

  3. Odstraňte prázdné řádky v textovém souboru pomocí grep

  1. Odeberte konkrétní znak pomocí awk nebo sed

  2. Jak změnit soubor na místě pomocí awk? (jako u sed -i)

  3. SED nahradit na více řádcích

  1. Shoda víceřádkového vzoru pomocí Sed, Awk nebo Grep?

  2. Awk z různých řádků?

  3. Zobrazit všechny řádky před zápasem?