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