GNU/Linux >> Linux の 問題 >  >> Linux

sed 行を結合する

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

ループ内 (分岐 ba :a にラベルを付ける )、現在の行が 0 (/0$/) で終わる場合 ) 次の行を追加 (N ) および内側の改行 (s/\n// を削除) ).

わかりました:

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

パール:

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

バッシュ:

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

awk も短い場合があります:

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

テスト:

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

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

Linux
  1. Sed、Awk、またはGrepを使用したマルチラインパターンマッチ?

  2. 行の範囲を行の範囲(sedまたはその他)に置き換えますか?

  3. 試合前にすべての行を表示しますか?

  1. SED を使用した単語の最初の文字の大文字化

  2. awk または sed を使用して特定の文字を削除する

  3. sed を使用して空行を削除する

  1. テキスト ファイルから奇数行または偶数行を削除する

  2. sed - 一致後に X 行の後に行を挿入する

  3. sed e および g フラグが一緒に機能しない