sed / awk:每隔第n个字符插入逗号

时间:2015-07-10 13:23:38

标签: awk sed comma

文件的内容类似于:

12345678123456781234567812345678
12345678123456781234567812345678

我想将这些行转换为:

12345678,12345678,12345678,12345678
12345678,12345678,12345678,12345678

2 个答案:

答案 0 :(得分:4)

我会使用GNU awk,就像这样:

gawk '{$1=$1}1' FPAT='.{8}' OFS=, input.file

说明:

此awk解决方案的关键是使用FPATOFS变量。请注意FPAT特定于gawk,这就是解决方案仅适用于GNU awk(gawk)的原因。

FPAT - 字段模式定义了一个正则表达式字段的外观。在我们的例子中,一个字段由8个任意字符组成:.{8}

OFS变量 - 输出字段分隔符用于将逗号定义为输出中各个字段之间的分隔符。

{$1=$1}看起来基本上类似于NOP操作,但它会触发awk重新组合当前记录 - 使用我们之前定义的OFS1始终为真,并使awk打印重新组装的记录。

答案 1 :(得分:3)

使用sed你可以做到

$ sed -r 's/(.{8})/\1,/g;s/,$//' <<< "12345678123456781234567812345678"
12345678,12345678,12345678,12345678