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/,$/”我会使用GNUawk
来实现这一点,如下所示:
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!