我有一个这样的文件:
A
B
C
D
E
F
G
H
I
J
K
L
我希望它出来
A,B,C,D
E,F,G,H
我假设我会使用 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,
最佳答案
设置input record separator到段落模式(-00
),然后在任何剩余的空白处拆分每条记录:
$ perl -00 -ne 'print join("," => split), "\n"' test
添加-l
启用自动换行(但要确保它出现在 -00
之前,因为我们希望将 $\
设置为 $/
< em>修改前):
$ perl -l -00 -ne 'print join("," => split)' test
添加-a
启用自动拆分模式并隐式拆分为 @F
:
$ perl -l -00 -ane 'print join("," => @F)' test
将 -n
换成 -p
用于自动打印:
$ perl -l -00 -ape '$_ = join("," => @F)' test
关于perl - 使用 sed 进行数据转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48938123/