【发布时间】:2014-01-09 16:43:46
【问题描述】:
我有两个文件(file1 和 file2)
file1:
-11.61
-11.27
-10.47
file2:
NAME
NAME
NAME
我想使用 awk 来搜索文件 2 中第一次出现的 NAME 并在它之前添加 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
我不知道为什么脚本在 file2 中每次出现 NAME 之前只放置 file1 的最后一个值。
感谢您的帮助!
抱歉,如果我的问题不清楚。以下是我的文件示例(energy.txt 和 sample.mol2):
[用户]$cat energy.txt
-11.61
-11.27
-10.47
[用户]$cat 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”这个词,您的问题会更清楚。
-
现在,您希望输出是什么?
-
我刚刚更新了所需的输出。谢谢