我想在特定文件中找到一个表达式,并将其替换为脚本中使用的文件的当前名称。我目前的剧本是:
for FILE in ../pdb/*;
do
basename $FILE .pdb | xargs -I '{}' sed -i 's/_final.pdb/{}_final.pdb/g' ./temp.txt
./program < temp.txt
done
psfgen.inp中的输出包含每个文件的名称,而不仅仅是当前文件:
writepdb fileAfileBfileC_final.pdb
它应该:
writepdb fileA_final.pdb
如何替换temp.txt中的当前basename,让程序在从循环中写下一个basename之前使用temp.txt,而不是在执行程序之前写入文件夹中所有文件的basename?
谢谢!
答案 0 :(得分:0)
好的,答案只是替换这样的整行:
for FILE in ../pdb/*;
do
basename $FILE .pdb | xargs -I '{}' sed -i '/_final.pdb/c\writepdb {}_final.pdb' ./temp.txt
./program < temp.txt
done