在 Unix 中转换行中未定义数量的列

pal*_*o11 -1 perl awk sed

我有一个文件,如下所示:

1 genA genB
2 genC genA genS genY
3 genM genC genF
...
Run Code Online (Sandbox Code Playgroud)

我想有以下输出:

1 genA
1 genB
2 genC
2 genA
2 genS
2 genY
3 genM
3 genC
3 genF
...
Run Code Online (Sandbox Code Playgroud)

有没有什么办法可以在 unix 中使用 awk、sed 或类似的方法来完成?

Sun*_*eep 6

还有一些perl选择:

perl -lane 'print "$F[0] $_" for @F[1..$#F]'

# assuming digits can occur only in the first column
perl -lape 's/(?<!\d) /\n$F[0] /g'
Run Code Online (Sandbox Code Playgroud)


raj*_*kar 5

perl -ae 'my $num = shift @F; for (@F) {print "$num $_\n"}'
Run Code Online (Sandbox Code Playgroud)

-a是启用自动拆分模式。这会将每一行拆分为数组@F。