从“item,item,...|tag”列表生成“item tag”对

从“item,item,...|tag”列表生成“item tag”对

输入数据的特征:

  • 每行由两个字段组成,用管道“|”分隔,其中
  • 第一个字段是逗号分隔的项目列表,并且
  • 第二个字段是标签。

输入

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/'

相关内容