从键值对中提取值并单独输出以逗号分隔的值

从键值对中提取值并单独输出以逗号分隔的值

输入文件数据

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

相关内容