キーと値のペアから値を抽出して、カンマ区切り値を個別に出力する

キーと値のペアから値を抽出して、カンマ区切り値を個別に出力する

入力ファイルデータ

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
  • awk2番目の列の値のみを印刷して確認して、空の行をスキップするために使用されます。NF
  • 次に、次を使用してpr3つの,列に

答え2

perl -00nE 'say join(",", /:\s*(.*)/g)' ip.txt

どこ:

  • perl -00nE EXP- 代表: foreach 段落 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

関連情報