输入文件数据
Name: aa
Age: 20
Address: zzzz
Name: bb
Age: 17
Address: cccc
我想这样输出
aa,20,zzzz
bb,17,cccc
答案1
$ cat ip.txt
Name: aa
Age: 20
Address: zzzz
Name: bb
Age: 17
Address: cccc
$ awk 'NF{print $2}' ip.txt | pr -3ats,
aa,20,zzzz
bb,17,cccc
- 用于
awk
仅打印第二列值并通过检查跳过空行NF
- 然后使用
pr
打印成 3 列,并以,
为分隔符
答案2
perl -00nE 'say join(",", /:\s*(.*)/g)' ip.txt
在哪里:
perl -00nE EXP
- 代表:foreach paragraph do {EXP}/:(.*)/g
- 返回匹配组的列表join(",", list)
- 将元素分开,
\谢谢{Sundeep}
答案3
使用 Perl 的示例。迭代文件中的每一行,并将我们想要的数据捕获到数组中,然后用逗号连接数组的元素并打印它。
use warnings;
use strict;
my $file = 'file.txt';
open my $fh, '<', $file or die $!;
while (my $line = <$fh>){
my @sections = $line =~ /:\s(.*?)\s/g;
print join ',', @sections;
print "\n";
}
输出:
aa,20,zzzz
bb,17,cccc