使用 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 行並將其附加到模式空間,然後用逗號取代所有換行符。

相關內容