我有一个像这样的文件:
A
B
C
D
E
F
G
H
I
J
K
L
Run Code Online (Sandbox Code Playgroud)
我希望它能像它一样出现
A,B,C,D
E,F,G,H
Run Code Online (Sandbox Code Playgroud)
我假设我会使用sed,但实际上我甚至不确定这是否是最好的工具.我愿意使用Linux系统上常用的任何东西.
在perl,我这样做了......它有效,但它很脏,有一个尾随的逗号.希望更简单的事情:
$ perl -ne 'if (/^(\w)\R/) {print "$1,";} else {print "\n";}' test
A,B,C,D,
E,F,G,H,
I,J,K,L,
Run Code Online (Sandbox Code Playgroud)
将输入记录分隔符设置为段落模式(-00),然后在任何剩余的空格上拆分每条记录:
$ perl -00 -ne 'print join("," => split), "\n"' test
Run Code Online (Sandbox Code Playgroud)
添加-l以启用自动换行(但请确保它在之前-00,因为我们希望$\将其设置为修改$/ 前的值):
$ perl -l -00 -ne 'print join("," => split)' test
Run Code Online (Sandbox Code Playgroud)
添加-a以启用autosplit模式并隐式拆分为@F:
$ perl -l -00 -ane 'print join("," => @F)' test
Run Code Online (Sandbox Code Playgroud)
换出-n了-p自动打印:
$ perl -l -00 -ape '$_ = join("," => @F)' test
Run Code Online (Sandbox Code Playgroud)