У меня есть два файла (ФАЙЛ1 и file2)Awk Хотя и For Loop
file1:
-11.61
-11.27
-10.47
file2:
NAME
NAME
NAME
Я хочу использовать AWK для поиска первого вхождения NAME в файле 2 и добавить 1-ю линию file1 перед ним, и скоро. Нужный выход
########## Energy: -11.61
NAME
########## Energy: -11.27
NAME
########## Energy: -10.47
NAME
Я попробовал этот код
#!/bin/bash
file=file1
while IFS= read line
do
# echo line is stored in $line
echo $line
awk '/MOLECULE/{print "### Energy: "'$line'}1' file2` > output
done < "$file"
Но это был выход, который я получил
########## Energy: -10.47
NAME
########## Energy: -10.47
NAME
########## Energy: -10.47
NAME
Я не знаю, почему скрипт ставит только последний значение файла1 перед каждым вхождением NAME в файл2.
Я ценю вашу помощь!
Извините, если в моем вопросе не было ясно. Вот образцы моих файлов (energy.txt и sample.mol2):
[пользователь] $ кошка energy.txt
-11.61
-11.27
-10.47
[пользователь] $ кошка sample.mol2
@<TRIPOS>MOLECULE
methane
5 4 1 0 0
SMALL
NO_CHARGES
@<TRIPOS>ATOM
1 C 2.8930 -0.4135 -1.3529 C.3 1 <1> 0.0000
2 H1 3.9830 -0.4135 -1.3529 H 1 <1> 0.0000
3 H2 2.5297 0.3131 -0.6262 H 1 <1> 0.0000
4 H3 2.5297 -1.4062 -1.0869 H 1 <1> 0.0000
5 H4 2.5297 -0.1476 -2.3456 H 1 <1> 0.0000
@<TRIPOS>BOND
1 1 2 1
2 1 3 1
3 1 4 1
4 1 5 1
@<TRIPOS>MOLECULE
ammonia
4 3 1 0 0
SMALL
NO_CHARGES
@<TRIPOS>ATOM
1 N 8.6225 -3.5397 -1.3529 N.3 1 <1> 0.0000
2 H1 9.6325 -3.5397 -1.3529 H 1 <1> 0.0000
3 H2 8.2858 -2.8663 -0.6796 H 1 <1> 0.0000
4 H3 8.2858 -4.4595 -1.1065 H 1 <1> 0.0000
@<TRIPOS>BOND
1 1 2 1
2 1 3 1
3 1 4 1
@<TRIPOS>MOLECULE
water
3 2 1 0 0
SMALL
NO_CHARGES
@<TRIPOS>ATOM
1 O 7.1376 3.8455 -3.4206 O.3 1 <1> 0.0000
2 H1 8.0976 3.8455 -3.4206 H 1 <1> 0.0000
3 H2 6.8473 4.4926 -2.7736 H 1 <1> 0.0000
@<TRIPOS>BOND
1 1 2 1
2 1 3 1
Это выход, который мне нужен
########## Energy: -11.61
@<TRIPOS>MOLECULE
methane
5 4 1 0 0
SMALL
NO_CHARGES
@<TRIPOS>ATOM
1 C 2.8930 -0.4135 -1.3529 C.3 1 <1> 0.0000
2 H1 3.9830 -0.4135 -1.3529 H 1 <1> 0.0000
3 H2 2.5297 0.3131 -0.6262 H 1 <1> 0.0000
4 H3 2.5297 -1.4062 -1.0869 H 1 <1> 0.0000
5 H4 2.5297 -0.1476 -2.3456 H 1 <1> 0.0000
@<TRIPOS>BOND
1 1 2 1
2 1 3 1
3 1 4 1
4 1 5 1
########## Energy: -11.27
@<TRIPOS>MOLECULE
ammonia
4 3 1 0 0
SMALL
NO_CHARGES
@<TRIPOS>ATOM
1 N 8.6225 -3.5397 -1.3529 N.3 1 <1> 0.0000
2 H1 9.6325 -3.5397 -1.3529 H 1 <1> 0.0000
3 H2 8.2858 -2.8663 -0.6796 H 1 <1> 0.0000
4 H3 8.2858 -4.4595 -1.1065 H 1 <1> 0.0000
@<TRIPOS>BOND
1 1 2 1
2 1 3 1
3 1 4 1
########## Energy: -10.47
@<TRIPOS>MOLECULE
water
3 2 1 0 0
SMALL
NO_CHARGES
@<TRIPOS>ATOM
1 O 7.1376 3.8455 -3.4206 O.3 1 <1> 0.0000
2 H1 8.0976 3.8455 -3.4206 H 1 <1> 0.0000
3 H2 6.8473 4.4926 -2.7736 H 1 <1> 0.0000
@<TRIPOS>BOND
1 1 2 1
2 1 3 1
Ваш вопрос будет гораздо понятнее, если вы вывесили некоторые фактические значения «NAME» в вашем входе и выходе, а не просто повторять слово " NAME "несколько раз. –
Теперь, каков вам результат? –
Я только что обновил требуемый выход. Спасибо – user2766886