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

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

1 genA genB
2 genC genA genS genY
3 genM genC genF
...

我想有以下输出:

1 genA
1 genB
2 genC
2 genA
2 genS
2 genY
3 genM
3 genC
3 genF
...

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

回答

还有一些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'


回答

perl -ae 'my $num = shift @F; for (@F) {print "$num $_n"}'

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


以上是在Unix中转换行中未定义数量的列的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>