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

Unix 对于数据表中的双输出,如何将第二个或多个输出移动到具有相同索引的新行,unix,sed,awk,Unix,Sed,Awk,我有一个包含两个字段的数据集,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来实现这一点。请帮助。使用: awk-F“,”{for(i=2;i这可能适合您(GNU-sed): +1但是我设置/使用OFS,并且不需要在$I中加括号:awk'BEGIN{FS=OFS=“,”}{for(

我有一个包含两个字段的数据集,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
来实现这一点。请帮助。

使用:

awk-F“,”{for(i=2;i这可能适合您(GNU-sed):


+1但是我设置/使用OFS,并且不需要在$I中加括号:
awk'BEGIN{FS=OFS=“,”}{for(i=2;我假设每行有k个字段。每行的字段数不一致。也没有办法预先确定。不,不是,
NF
是每行的字段数。也许我误解了,但当我运行以下awk-F“,”{for(i=2;i可能你应该使用
NF
,而不是
10
,因为我一直在回答这个问题。
awk -F"," '{ for (i=2; i<=NF; i++) print $1","$(i) }' input.txt
sed -r 's/(([^,]*),[^,]*),/\1\n\2,/;P;D' file