2016-06-27 34 views
0

我有一個關於在bash腳本中插入一個大文本文件的新行的問題;以序列方式插入新行

我的檔案;

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

如果我不那麼清晰的描述可以理解你的問題,你可以使用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 
+1

非常感謝你anubhava,這個腳本完美地解決了我的問題! –