我有以下多行数据
username: joe
empid: 1111
status: resigned
username: tom
emid: 1234
username: kate
empid: 2222
status: resigned
我想要的是将数据放入其他文件中,如下所示
username: joe,empid: 1111,status: resigned
username: tom,empid: 1234
username: kate,empid: 2222,status: resigned
祝好,KJ
答案1
以下是较短的 perl 版本:
perl -000 -ne 's/\n+/,/g; s/,$//g; print "$_\n"' filename.txt
激活-000
段落模式,其中多个连续的换行符定义一个输入记录。
答案2
我设法使用
perl -p -e 's/\n/,/' filename.txt | perl -p -e 's/,,/\n/g' | perl -p -e 's/,\Z/\n/g'
第一个命令用逗号替换换行符,第二个命令将换行符放回到两个换行符之前的位置,第三个命令删除最后一个逗号并将其替换为换行符。
可能可以用一个命令完成所有这些操作,但我对此不够熟悉perl
。我在这里使用它的原因是它sed
没有提供替换换行符的简单解决方案。
答案3
使用 gawk,
gawk '{s=$1 $2;for(i=3;i<NF;i+=2) {s=s "," $i $(i+1)}print s}' RS= IFS=":" input.txt
但请注意,这会“吃掉”字段分隔符 (:) 后的空格。
答案4
您还可以使用tr
:
tr '\n' ',' filename.txt