awk または sed を使用して一致後の 7 行を CSV 行に変換する

awk または sed を使用して一致後の 7 行を CSV 行に変換する

次のようなテキスト ファイルがあります。

707.421
KFDTL902
C
107.31 NL
Chn PCO
FMN 
Chn Co
727.102
KFDTL901
C
107.32 NL
Chn PCO
FMN 
Chn Co

このパターンが繰り返されます。707.xxx ([0-9]{3}.[0-9]{3}) と一致させ、一致後の次の 7 行を取得して、最初のセルが正規表現一致である CSV の行にします。出力は次のようになります。

707.421,KFDTL902,C,107.31 NL,Chn PCO,FMN,Chn Co
707.421,KFDTL902,C,107.31 NL,Chn PCO,FMN,Chn Co
707.421,KFDTL902,C,107.31 NL,Chn PCO,FMN,Chn Co

awk または sed を使用してこれを行うことは可能ですか? これらのツールを使用して一致後の次の 7 行を使用するにはどうすればよいですか?

答え1

sed

$ sed '/^[0-9]\{3\}\.[0-9]\{3\}$/{N;N;N;N;N;N;s/\n/,/g}' input.txt
707.421,KFDTL902,C,107.31 NL,Chn PCO,FMN ,Chn Co
727.102,KFDTL901,C,107.32 NL,Chn PCO,FMN ,Chn Co

パターンに一致する各行について、次の 6 行を読み取ってパターン スペースに追加し、すべての改行をコンマに置き換えます。

関連情報