【发布时间】:2013-11-15 14:50:42
【问题描述】:
我从 shell 运行的工作 sed 是:
sed -re 's/(::\s+ni\s+=)[^=]*$/\1 512/' test.dat
但是,我无法通过 Python 的 subprocess.call 运行它:
我有以下几点:
infile = 'test.dat'
cmd= [
"sed",
"-re",
"s/(::\s+ni\s+=)[^=]*$/\1 512/",
infile
]
subprocess.call(cmd, stdout=open('out_test.dat','w'))
我尝试了许多不同的方法,但总是得到非零退出状态。
【问题讨论】:
-
是不是因为你的正则表达式应该包含用双引号括起来的单引号,即
"'s/(::\s+ni\s+=)[^=]*$/\1 512/'"? -
你需要转义你的斜线。
-
为什么不使用 Python 内置的正则表达式替换功能?
-
@Bill:它在shell命令行中没有被双引号包围的单引号。
-
另外,
sed不是在向 stderr 写入错误消息,您可以在运行脚本时看到吗?
标签: python regex bash replace sed