输入文件:
DAN|a@gmail.com,c@yahoo.co.in,abc@gmail.com
NAB|a@gmail.com
PAT|a@gmail.com
DAN|y@gmail.com
NAB|y@yahoo.in
PAT|z@redhat.com,abc@gmail.com
DAN|y@gmail.com,abc@gmail.com
NAB|b@yahoo.co.in
PAT|c@uix.xo.in
DAN|y@gmail.com
NAB|b@yahoo.co.in
PAT|c@uix.xo.in
考虑第1行,有多个记录是','分开。找','分开的记录。如果','在第1行找到分隔的记录,那么将它放入下一行,并用“DAN |”附加它,无论开头的字符串是什么,都应该追加。所以输出应该是:
DAN|a@gmail.com
DAN|c@yahoo.co.in
DAN|abc@gmail.com
NAB|a@gmail.com
PAT|a@gmail.com
DAN|y@gmail.com
NAB|y@yahoo.in
PAT|z@redhat.com
PAT|abc@gmail.com
DAN|y@gmail.com
DAN|abc@gmail.com
NAB|b@yahoo.co.in
PAT|c@uix.xo.in
DAN|y@gmail.com
NAB|b@yahoo.co.in
PAT|c@uix.xo.in
答案 0 :(得分:2)
以下是使用awk
的一种方法,使用两个分隔符:
awk -F "[|,]" '{ for (i=2;i<=NF;i++) print $1 "|" $i }' file
这是使用单个分隔符的另一种方式:
awk -F, '{ for (i=1;i<=NF;i++) print (i>1 ? substr($0,0,4) : "") $i }' file
结果:
DAN|a@gmail.com
DAN|c@yahoo.co.in
DAN|abc@gmail.com
NAB|a@gmail.com
PAT|a@gmail.com
DAN|y@gmail.com
NAB|y@yahoo.in
PAT|z@redhat.com
PAT|abc@gmail.com
DAN|y@gmail.com
DAN|abc@gmail.com
NAB|b@yahoo.co.in
PAT|c@uix.xo.in
DAN|y@gmail.com
NAB|b@yahoo.co.in
PAT|c@uix.xo.in
答案 1 :(得分:0)
另一个:
awk -F'[|,]' '{gsub(/,/,RS $1 "|")}1' file