输入数据的特征:
- 每行由两个字段组成,用管道“|”分隔,其中
- 第一个字段是逗号分隔的项目列表,并且
- 第二个字段是标签。
输入
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/'