我有一个文件,如下所示:
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 或类似的方法来完成?
还有一些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)
perl -ae 'my $num = shift @F; for (@F) {print "$num $_\n"}'
Run Code Online (Sandbox Code Playgroud)
-a
是启用自动拆分模式。这会将每一行拆分为数组@F。