对于数据表中的双输出,如何将第二个或更多输出移动到具有相同索引的新行

时间:2013-12-13 15:24:58

标签: unix sed

我有一个包含两个字段x和y的数据集。 x可能有多个输出y。例如:

  

X1,Y11,Y12,Y13,...,Y1N

     

X2,Y21

     

X3,Y31,Y32

     

...

我想操纵数据,看起来像:

  

X1,Y11

     

X1,Y12

     

X1,Y13

     

...

     

x1,y1n

     

X2,Y21

     

X3,Y31

     

X3,Y32

     

...

我正在尝试使用sed执行此操作。请帮忙。

2 个答案:

答案 0 :(得分:2)

使用

awk -F"," '{ for (i=2; i<=NF; i++) print $1","$(i) }' input.txt

将字段分隔,并循环遍历一行中的所有字段,从第二个字段开始,以最后一个字段结束(NF =字段数)并始终打印第一个字段和第i场。

答案 1 :(得分:1)

这可能适合你(GNU sed):

sed -r 's/(([^,]*),[^,]*),/\1\n\2,/;P;D' file