如何使用" awk"执行具有相同尾部的多个文件并导出到具有新尾部的一些新文件?

时间:2015-11-01 04:44:52

标签: linux bash awk

我有一个包含许多文件的文件夹,每个文件都被命名为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**

1 个答案:

答案 0 :(得分:0)

这是我的答案,因为我没有你的.pqr文件我无法真正测试它但它应该可以工作(我还通过合并和使用缩短的表格来改进awk命令需要的话):

for file in /path/to/files/*.pqr do 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 done