我有100个.pdb文件,我需要连接到另一个.pdb文件。我正在使用bash脚本和cat命令,但无法正确编写增量变量!有一个T0950-A.pdb文件和100个T0950-B_1.pdb文件使用文件名中的最后一个数字递增编号为100。这是我的剧本:
#!/bin/bash
#concatenate pdb A file to 100 pdb B files
COUNTER=0
while [ $COUNTER -lt 101 ]; do
./cat T0950-A.pdb T0950-B_[$COUNTER].pdb > Frodock-T0950_[$COUNTER].pdb
let COUNTER=COUNTER+1
done
非常感谢您提前提供任何帮助。
答案 0 :(得分:0)
for pdbb in T0950-B_*.pdb; do
cat T0950-A.pdb "$pdbb" >"Frodock-T0950_${pdbb#*_}"
done
${pdbb#*_}
参数替换会将字符串T0950-B_55.pdb
转换为55.pdb
(删除所有内容,包括第一个_
字符。)
这依赖于现有的PDB B文件,不会尝试迭代整数。
如果您想仅遍历前100个PDB B文件,那么您可以使用
for pdbb in T0950-B_{1..100}.pdb; do
cat T0950-A.pdb "$pdbb" >"Frodock-T0950_${pdbb#*_}"
done
或
for (( i = 1; i <= 100; ++i )); do
pdbb="T0950-B_$i.pdb"
cat T0950-A.pdb "$pdbb" >"Frodock-T0950_${pdbb#*_}"
done
但这两种变体并不能保证迭代的文件实际存在。
回复评论(也有名称如H0957-B.1.pdb
的文件)。
是的,以上代码无法获取这些内容。相反,你会做类似
的事情for pdbb in H0957-B.*.pdb; do
cat H0957-A.pdb "$pdbb" >"Somename-H0957_${pdbb#*.}"
done