0

我从 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'))

我尝试了许多不同的方法,但我总是得到一个非零退出状态。

4

1 回答 1

4

问题是 Python 字符串"s/(::\s+ni\s+=)[^=]*$/\1 512/"包含一个您想要反斜杠和 1 的 control-A。每当您将正则表达式编写为字符串文字时,如果可能,您希望使用原始字符串,否则转义反斜杠。因此,只需将该行更改为:

r"s/(::\s+ni\s+=)[^=]*$/\1 512/",
于 2013-11-04T21:04:13.187 回答