
次のようなテキスト ファイルがあります。
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 行を読み取ってパターン スペースに追加し、すべての改行をコンマに置き換えます。