我有一个关于通过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
答案 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