以顺序方式插入新行

时间:2016-06-27 16:29:56

标签: bash shell

我有一个关于通过bash脚本在大text.file中插入新行的问题;

我的档案;

E.coli.1    gi|1035701777|ref|WP_064543348.1|   85.62   160 23  0   12  171 1   160 4,00E-103   300
E.coli.2    gi|1035701777|ref|WP_064543348.1|   85.62   160 23  0   1   160 1   160 3,00E-103   300
E.coli.5    gi|1036669825|ref|WP_064721309.1|   96.69   393 13  0   2   394 1   393 0.0 748
E.coli.6    gi|1036669825|ref|WP_064721309.1|   96.69   393 13  0   2   394 1   393 0.0 748
E.coli.7    gi|1037427804|ref|WP_064741043.1|   67.95   78  25  0   1   78  1   78  9,00E-33    114

我的预期输出:

E.coli.1    gi|1035701777|ref|WP_064543348.1|   85.62   160 23  0   12  171 1   160 4,00E-103   300
E.coli.2    gi|1035701777|ref|WP_064543348.1|   85.62   160 23  0   1   160 1   160 3,00E-103   300
E.coli.3
E.coli.4
E.coli.5    gi|1036669825|ref|WP_064721309.1|   96.69   393 13  0   2   394 1   393 0.0 748
E.coli.6    gi|1036669825|ref|WP_064721309.1|   96.69   393 13  0   2   394 1   393 0.0 748
E.coli.7    gi|1037427804|ref|WP_064741043.1|   67.95   78  25  0   1   78  1   78  9,00E-33    114

1 个答案:

答案 0 :(得分:1)

如果我通过不明确的说明理解您的问题,您可以使用awk解决问题:

awk -F '[.[:blank:]]+' 'p{for (;p<$3; p++) print f p} NF>3{p=$3+1; f=$1 "." $2 "."}1' file

E.coli.1    gi|1035701777|ref|WP_064543348.1|   85.62   160 23  0   12  171 1   160 4,00E-103   300
E.coli.2    gi|1035701777|ref|WP_064543348.1|   85.62   160 23  0   1   160 1   160 3,00E-103   300
E.coli.3
E.coli.4
E.coli.5    gi|1036669825|ref|WP_064721309.1|   96.69   393 13  0   2   394 1   393 0.0 748
E.coli.6    gi|1036669825|ref|WP_064721309.1|   96.69   393 13  0   2   394 1   393 0.0 748
E.coli.7    gi|1037427804|ref|WP_064741043.1|   67.95   78  25  0   1   78  1   78  9,00E-33    114