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)
我会为此使用 GNU awk,如下所示:
gawk '{$1=$1}1' FPAT='.{8}' OFS=, input.file
Run Code Online (Sandbox Code Playgroud)
解释:
这个 awk 解决方案的关键是FPAT和OFS变量的使用。请注意,这FPAT是特定于 gawk 的,这就是该解决方案仅适用于 GNU awk (gawk) 的原因。
FPAT-字段模式定义了一个正则表达式字段应该是什么样子。在我们的例子中,一个字段由 8 个任意字符组成:.{8}
该OFS可变-输出字段分隔符是用来定义逗号作为在输出单个字段之间的分隔符。
{$1=$1}看起来基本上像一个NOP操作,但是它会触发 awk 重新组合当前记录 - 使用OFS我们之前定义的 。1始终为真,并使 awk 打印重新组装的记录。
| 归档时间: |
|
| 查看次数: |
3323 次 |
| 最近记录: |