2016-06-27 3 views
0

У меня возник вопрос о вставке новой строки в большой файл text.file с помощью bash scripting;Ввод новой строки в порядке очереди

Мой файл;

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

Спасибо вам столько анубхава, этот скрипт отлично решил мою проблему! –

Смежные вопросы