"item,item,...|tag" リストから "item tag" ペアを作成 [閉じる]

"item,item,...|tag" リストから "item tag" ペアを作成 [閉じる]

入力データの特性:

  • 各行は、パイプ「|」で区切られた2つのフィールドで構成されています。
  • 最初のフィールドは、カンマで区切られた項目のリストです。
  • 2番目のフィールドはラベルです。

入力する

100,210,354,462|acct
331,746,50|mis
90,263,47,14|sales

出力

100acct
210acct
354acct
462acct
331mis
746mis
50mis
90sales
263sales
47sales
14sales

答え1

項目に「|」が含まれておらず、タグに「,」が含まれていないとします。

awk -F '[,|]' '{for(i=1;i<NF;i++)print$i$NF}' input.txt

答え2

PERL そうでしょうか?

$ perl -ne 'chomp; @a=split(/\|/); @b=split(/,/,$a[0]); map{print "$_$a[1]\n"}@b' input.txt

答え3

純粋なsedソリューション:

sed ':a;s/\(.*\),\([^,]*\)|\(.*\)/\2\3\n\1|\3/;ta;s/|//' input.file

答え4

言った…

sed -e 's/^\([0-9][0-9]*\),.*|\(.*\)/\1\2/'

最初のフィールドが数値でない場合は、次のように変更できます。

sed -e 's/^\([^,][^,]*\),.*|\(.*\)/\1\2/'

関連情報