単一レコード行から未決定数の行を変換する方法

単一レコード行から未決定数の行を変換する方法

私は最近ここで同じ質問をしましたが、いくつかの他の質問があります。前任者:

入力ファイル

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

希望の出力:

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

したがって、上記のように、1行も定義されていないファイルがあります。 2、3、または 4 にすることができ、各レコードは ****************** で区切られます。各レコードのすべての行を単一の行に変換できますか?正確な行数に成功しましたpaste -s -d ' \n'

ベストアンサー1

$ sed -e :a -e '$!N;s/ *\n+ / /;ta' -e 'P;D' testfile
******************
.WER aaa bbb ccc ddd eee 
******************
.SDF zzz xxx yyy iii kkk lll
******************
.XCV uuu vvv ggg hhh qqq
******************

http://sed.sourceforge.net/sed1line.txt同様の例があります。

  • :aラベル「a」を作成

  • $!N最後の行($!)でない場合は、次の行(および改行)をパターンスペースに追加します。

  • s/ *\n+ / /末尾のスペース、改行、+、およびその後のスペースを単一のスペースに置き換えます。

  • taラベルaに戻る

  • Pパターンスペースを印刷します。 sedの - オプションを使用していないので、これは2倍の出力を生成するので、-n次のものが必要です。

  • D重複出力を削除します。

おすすめ記事