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

sed/awk:每n个字符插入逗号,awk,sed,comma,Awk,Sed,Comma,文件的内容类似于: 12345678123456781234567812345678 12345678123456781234567812345678 我想将这些行转换为: 12345678,12345678,12345678,12345678 12345678,12345678,12345678,12345678 有了sed,你可以做什么 $ sed -r 's/(.{8})/\1,/g;s/,$//' <<< "12345678123456781234567812345

文件的内容类似于:

12345678123456781234567812345678
12345678123456781234567812345678
我想将这些行转换为:

12345678,12345678,12345678,12345678
12345678,12345678,12345678,12345678
有了sed,你可以做什么

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

$sed-r's/(.{8})/\1,/g;s/,$/”我会使用GNU
awk
来实现这一点,如下所示:

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

此awk解决方案的关键是使用
FPAT
OFS
变量。请注意,
FPAT
是特定于gawk的,这就是为什么该解决方案仅适用于gnuawk(gawk)

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

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


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

您自己尝试过解决此问题的方法吗?只是一个提示,您不需要捕获组,您可以使用
s/{8}/\0,/g;s/,$/
。。我对需要在末尾删除尾部命令不满意,这就是为什么我建议使用
awk
。但是由于问题被标记为
sed
,加上1!