GNU/Linux >> Belajar Linux >  >> Linux

sed menggabungkan garis bersama

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

Dalam satu lingkaran (cabang ba untuk memberi label :a ), jika baris saat ini diakhiri dengan 0 (/0$/ ) tambahkan baris berikutnya (N ) dan hapus baris baru dalam (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 bisa juga pendek:

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

tes:

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

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

Linux
  1. Pencocokan Pola Multiline Menggunakan Sed, Awk Atau Grep?

  2. Ganti Rentang Garis Dengan Rentang Garis (sed Atau Lainnya)?

  3. Awk Dari Baris Yang Berbeda?

  1. grep hanya cocok dengan garis dalam rentang yang ditentukan

  2. Hapus baris kosong menggunakan sed

  3. Hapus baris ganjil atau genap dari file teks

  1. Tampilkan Semua Baris Sebelum Pertandingan?

  2. sed - menyisipkan baris setelah baris X setelah pertandingan

  3. SED ganti di beberapa baris