我有sed的问题。我想在多个文档中替换多行的整个特定行号。
这是1个特定文档中1个特定行的bash命令:
BNAME=$(basename $FILE .pdb)
psfgen1="pdb ./sedpdb/${BNAME}.pdb/"
sed -i '8s/'.*'/'${psfgen1}'/' ./psfgen.inp
我收到此错误: sed:-e表达式#1,char 60:未终止的's'命令
有谁知道如何解决这个问题?谢谢!
答案 0 :(得分:2)
我看错了两件事:
*
是未加引号的,因此shell会将其全局扩展为目录中所有文件的名称。在字符串替换中可靠地使用shell变量是非常重要的,但可以使用this question的答案中显示的方法之一来完成。
在您的情况下,看起来您可能会使用其他字符作为分隔符,例如@
:
sed -i "8s@.*@${psfgen1}@" ./psfgen.inp