按第一个字段转换行中的值

按第一个字段转换行中的值

我想知道是否有一种简单的方法可以在不编写脚本的情况下执行以下操作。

转换

1234,"a;b;d"
2345,"e;f;g;h"

1234,a
1234,b
1234,d
2345,e
2345,f
2345,g
2345,h

答案1

应该很容易awk

$ awk -F'[";]' -vOFS='' '{for(i=2;i<NF;i++)print $1,$i}' file
1234,a
1234,b
1234,d
2345,e
2345,f
2345,g
2345,h

答案2

perl -nE  '/(.*?)"(.*)"/;  say "$1$_" for split /;/,$2'

相关内容