【发布时间】:2014-10-23 23:37:51
【问题描述】:
我正在 python 中创建一个命令字符串,需要使用 pexpect 在主机上执行。我希望在主机上运行的 sed 命令如下:
sed -i 's/\(panic=30\)/\1 my_cool_option/g' /boot/bootrc
如何在 python 中创建一个保留反斜杠的变量?最初,我尝试过
bootrc = '/boot/bootrc'
param = 'ignorefs'
cmd = "sed -i 's/\(panic=30\)/\\1 {}/g' {}".format(param, bootrc)
self.runExpectCmd(cmd)
当我在 python shell 中检查上述代码时,它看起来还不错:
>>> bootrc = '/boot/bootrc'
>>> param = 'ignorefs'
>>> cmd = "sed -i 's/\(panic=30\)/\\1 {}/g' {}".format(param, bootrc)
>>> print cmd
sed -i 's/\(panic=30\)/\1 ignorefs/g' /boot/bootrc
但是,当我逐步通过 pdb 了解代码失败的原因时,cmd 设置为
(Pdb) p cmd
"sed -i 's/\\(panic=30\\)/\\1 ignorefs/g' /boot/bootrc"
我不知道如何生成正确的字符串来执行 sed 命令。
谢谢
【问题讨论】:
-
我得到了替换来处理这个:
cmd = "perl -pi -e 's/(panic=30)/\\1 foobar/g' bootrc".format(param, bootrc)我仍然想了解如何生成一个 sed 可以使用的字符串。 -
原始字符串? r'...'?
标签: python