在我的输入文件中,列以制表符分隔,每列中的值以逗号分隔。
我想打印第一列,第二列的每个逗号分隔值。
Mary,Tom,David cat,dog
Kevin bird,rabbit
John cat,bird
...
对于第二列中的每条记录(例如 cat,dog
)我想拆分
记录到 [ cat, dog ] 数组中并交叉打印
第一栏。给出输出(仅针对这一行)
Mary,Tom,David cat
Mary,Tom,David dog
整个文件的输出应该是:
Mary,Tom,David cat
Mary,Tom,David dog
Kevin bird
Kevin rabbit
John cat
John bird
...
如果我想使用 awk 或 sed,有什么建议吗?
最佳答案
用 awk
awk '{split($2,a,",");for(i in a)print $1"\t"a[i]}' file
用逗号分割第二列,然后对于每个分割值,打印第一列和那个值
也在sed中
sed ':1;s/\(\([^\n]*\t\)[^\n]*\),\{1,\}/\1\n\2/;t1' file
关于Bash 将单个逗号分隔的列转换为多行字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33408762/