使用 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 行并将其附加到模式空间,然后用逗号替换所有换行符。

相关内容