sed 变量替换问题

先祭出部分代码:

from commands import getstatusoutput

index=str(4)
base='base.id = '+index
cmd="sed -i "s/base.id = 3/${base}/g" /data/test.txt"

想用python执行shell的sed替换命令,用一个变量替换一个常量,无奈一直不行(str(4)部分其实是输入的值,为了更好调试我就填了个4进去),求大神指点。

阅读 6.4k
2 个回答

你既然想执行的是sed的替换命令,那 s替换命令不就是丢了么?
sed -i 's/base.id = 3/base.id = 4/' test.txt

--
你把shell的变量替换用到python里是不行的。
使用python string的 format

cmd="sed -i \"s/base.id = 3/{}/g\" test.txt".format(base)
subprocess.call(cmd, shell=True)

把最外侧的两个双引号改成单引号

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题