2016-06-30 2 views
0

у меня есть: тяги тхты файлов состояла из множества строк и один reference.txt (короткие) файл моего Баша скрипт делает следующие вещи: 1) в то время как цикл из притяжения текстовых файлов он выполняет что-то с каждым из файлов (не изменяя его состав), после чего 2) следует объединить состав каждого файла с составом reference.txt в указанной позицииОбъединения двух текстовых файлов с помощью Баша

например, окончание каждого из рабочих файлов выглядит

ATOM 13703 HA GLN 100  83.311 32.648 23.654 0.1232 1.3870 
ATOM 13704 HG2 GLN 100  82.879 33.518 22.168 0.0203 1.4870 
ATOM 13705 HB2 GLN 100  84.606 31.260 21.824 0.0452 1.4870 
ATOM 13706 HE22 GLN 100  84.225 34.975 20.004 0.4304 0.6000 
ATOM 13707 OE1 GLN 100  82.389 32.538 19.564 -0.6098 1.6612 
ATOM 13708 NE2 GLN 100  83.817 34.212 19.506 -0.9574 1.8240 
ATOM 13709 HE21 GLN 100  83.663 34.375 18.529 0.4304 0.6000 
TER 
END 

здесь я должен заменить й последней строки «END» на полный текст взят из reference.pdb

HETATM 5420 CU CU A 559  54.926 67.840 66.647 1.00 47.11   CU 
HETATM 5421 MG MG A 560  58.119 65.472 53.773 1.00 12.89   MG 
HETATM 5422 CA CA A 561  78.459 57.926 52.401 1.00 22.70   CA 
HETATM 7924 CU CU B 270  62.144 60.705 47.277 1.00 40.39   CU 
HETATM 7925 CU CU B 271  60.809 60.526 45.118 1.00 44.84   CU 

получение в конечном итоге для каждого из подрезанный файла, как л:

ATOM 13695 O GLN 100  82.103 30.697 24.719 -0.8042 1.6612 
ATOM 13696 CB GLN 100  83.798 31.641 22.204 -0.0664 1.9080 
ATOM 13697 CG GLN 100  83.606 33.044 21.616 -0.0210 1.9080 
ATOM 13698 CD GLN 100  83.251 33.196 20.146 0.7093 1.9080 
ATOM 13699 H GLN 100  85.355 33.328 24.357 0.2681 0.6000 
ATOM 13700 OXT GLN 100  83.889 29.761 24.981 -0.8042 1.6612 
ATOM 13701 HG3 GLN 100  84.467 33.577 21.792 0.0203 1.4870 
ATOM 13702 HB3 GLN 100  82.992 31.127 22.034 0.0452 1.4870 
ATOM 13703 HA GLN 100  83.311 32.648 23.654 0.1232 1.3870 
ATOM 13704 HG2 GLN 100  82.879 33.518 22.168 0.0203 1.4870 
ATOM 13705 HB2 GLN 100  84.606 31.260 21.824 0.0452 1.4870 
ATOM 13706 HE22 GLN 100  84.225 34.975 20.004 0.4304 0.6000 
ATOM 13707 OE1 GLN 100  82.389 32.538 19.564 -0.6098 1.6612 
ATOM 13708 NE2 GLN 100  83.817 34.212 19.506 -0.9574 1.8240 
ATOM 13709 HE21 GLN 100  83.663 34.375 18.529 0.4304 0.6000 
TER 
HETATM 5420 CU CU A 559  54.926 67.840 66.647 1.00 47.11   CU 
HETATM 5421 MG MG A 560  58.119 65.472 53.773 1.00 12.89   MG 
HETATM 5422 CA CA A 561  78.459 57.926 52.401 1.00 22.70   CA 
HETATM 7924 CU CU B 270  62.144 60.705 47.277 1.00 40.39   CU 
HETATM 7925 CU CU B 271  60.809 60.526 45.118 1.00 44.84   CU 
END 
+0

Межсайтовые дубликат [Заменитель шаблона в файле с содержанием другого файла] (HTTP: //unix.stackexchange.com/questions/49377/substitute-pattern-within-a-file-with-the-content-of-other-file) –

ответ

4

С СЕПГ, чтобы вставить содержание reference.pdb до того END строки:

sed ' 
/END/ { 
r reference.pdb 
a END 
d 
} 
' workfile 

Edit:

Если имя файла хранится в переменной, СЭД команда должна быть в двойные кавычки:

ref=reference.pdb 
sed " 
/END/ { 
r $ref 
a END 
d 
} 
" workfile 
+0

Странно, но это не работает. Я положил это в пределах цикла предоставления в рамках СЭД, однако мой reference.pdb определено в переменной: SED ' /END/{ г $ {} исх Конец д } ' $ выход/$ {} Tit _pqr .pdb – user3470313

+0

@ user3470313 Я обновил. Команда Sed должна быть двойной, чтобы разрешить расширение переменной. И не используйте один вкладыш, как в вашем комментарии, команды 'r' и' a' не должны сопровождаться другими командами в одной строке. – SLePort

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