前の行にパターンに一致する行を追加する方法

前の行にパターンに一致する行を追加する方法

前任者:

入力ファイル

******************
.WER
+ aaa bbb ccc
+ ddd eee 
+ fff ggg hhh
******************
.SDF
+ zzz xxx yyy 
+ iii  
+ kkk lll
******************
.XCV
+ uuu vvv ggg 
+ hhh qqq 
+ rrr ttt jjj
******************

希望の出力:

******************
.WER aaa bbb ccc ddd eee fff ggg hhh
******************
.SDF zzz xxx yyy iii kkk lll
******************
.XCV uuu vvv ggg hhh qqq rrr ttt jjj
******************

「+」パターンに一致する行を前の行に追加し、「+」を空白に置き換えたいです。

誰かがawkまたはsed(またはgrep)コマンドを使用してこの問題を解決できますか?

私はLinux初心者です。コマンドライン全体について詳しく説明してください。

ベストアンサー1

質問に/ linuxタグを付けたので、おそらくGNUを使用しているでしょうsed。その後、この-zオプションを使用して1つのバッファでファイル全体を処理し、次のものを使用できます。

sed -z 's/\n+//g'

これは、次のs各改行文字()をnullに置き換えることを意味します。つまり、前の行から始まる行をリンクします。\n+++

おすすめ記事