文件的内容类似于:
12345678123456781234567812345678
12345678123456781234567812345678
我想将这些行转换为:
12345678,12345678,12345678,12345678
12345678,12345678,12345678,12345678
答案 0 :(得分:4)
我会使用GNU awk
,就像这样:
gawk '{$1=$1}1' FPAT='.{8}' OFS=, input.file
说明:
此awk解决方案的关键是使用FPAT
和OFS
变量。请注意FPAT
特定于gawk,这就是解决方案仅适用于GNU awk(gawk)的原因。
FPAT
- 字段模式定义了一个正则表达式字段的外观。在我们的例子中,一个字段由8个任意字符组成:.{8}
OFS
变量 - 输出字段分隔符用于将逗号定义为输出中各个字段之间的分隔符。
{$1=$1}
看起来基本上类似于NOP
操作,但它会触发awk重新组合当前记录 - 使用我们之前定义的OFS
。 1
始终为真,并使awk打印重新组装的记录。
答案 1 :(得分:3)
使用sed你可以做到
$ sed -r 's/(.{8})/\1,/g;s/,$//' <<< "12345678123456781234567812345678"
12345678,12345678,12345678,12345678