sed/awk: insert commas every nth character

mil*_*ily 3 awk sed comma

Contents of the files are something like:

12345678123456781234567812345678
12345678123456781234567812345678
Run Code Online (Sandbox Code Playgroud)

I would like to convert these rows to:

12345678,12345678,12345678,12345678
12345678,12345678,12345678,12345678
Run Code Online (Sandbox Code Playgroud)

hek*_*mgl 7

我会为此使用 GNU awk,如下所示:

gawk '{$1=$1}1' FPAT='.{8}' OFS=, input.file
Run Code Online (Sandbox Code Playgroud)

解释:

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

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

OFS可变-输出字段分隔符是用来定义逗号作为在输出单个字段之间的分隔符。

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