【发布时间】:2014-04-29 20:12:50
【问题描述】:
我正在尝试从 python 脚本编辑配置文件。默认情况下,配置文件在一行中包含key=,没有值。但是用户可能已经编辑了 conf 文件,使其显示为key=value1。如果是这种情况,我不想编辑值,但不要管它。我对 sed 的调用如下所示:
from subprocess import call
call(["/bin/sed", "-i", "s/key=\\n/key=val/", confPath])
但这不匹配。我已经尝试使用\n 而不是\\n 并且由于“未终止的 s 命令”而导致 sed 崩溃。我用\\r 试过了,但也不匹配。
请注意,我不能调用s/key=/key=val/,因为如果文件已经包含key=val1,我可能会在conf文件中得到key=valval1。
【问题讨论】:
-
为了避免在 Python 中转义导致的任何问题,我建议使用原始字符串作为 sed 的参数,例如
r"s/key=\\n/key=val/"。此外,您可能希望使用$来表示行尾。