我有一个包含许多文件的文件夹,每个文件名为xxx.pqr,其中包含蛋白质结构记录。编写一个 bash 脚本,将每个 pqr 文件中的蛋白质移动到原点 (0,0,0) 的中心。将包含重新定位的蛋白质的每个新文件命名为 xxxx.pqr.centered。
我使用“awk”将蛋白质移动到它所在的位置,但是在尝试为每个文件创建 xxx.pqr.centered 时遇到了一些麻烦,这是我的代码,我真的不知道最后几句话:
awk -v n=0 -v sumx=0 -v sumy=0 -v sumz=0 ' { if($1 == "ATOM") sumx=sumx+$6;sumy=sumy+$7;sumz=sumz+$8;n=n+1; if($1 == "ATOM") printf("%s%8.3f%8.3f%8.3f%s\n", substr($0,1,30),$6-(sumx/n),$7-(sumy/n),$8-(sumz/n),substr($0,55,100))}' *.pqr > **????.centered**
最佳答案
这是我的答案,因为我没有您的 .pqr
文件,所以我无法真正测试它,但它应该可以工作(我还通过在需要时合并和使用缩写形式来改进 awk
命令):
对于/path/to/files/*.pqr 中的文件
做
awk -v n=0 -v sumx=0 -v sumy=0 -v sumz=0
'{
if($1 == "ATOM") {
sumx+=$6;sumy+=$7;sumz+=$8;n++;
printf("%s%8.3f%8.3f%8.3f%s\n", substr($0,1,30),$6-(sumx/n),$7-(sumy/n),$8-(sumz/n),substr($0,55,100))
}
} ' $file > ${file}.centered
完毕
关于linux - 如何使用 "awk"执行具有相同尾部的多个文件并导出到一些具有新尾部的新文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33459294/