入力データの特性:
- 各行は、パイプ「|」で区切られた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/'