【发布时间】:2015-07-14 00:05:10
【问题描述】:
我正在使用 Python 在子进程的帮助下进行 sed 删除/替换。不知何故,我没有得到正确的转义次数。这是我的代码:
from subprocess import call
remover = ["sed", "-i", "'1d'", "file"]
call(remover)
removeq = ["sed", "-i", "'s/\"//g'", "file"]
call(removeq)
这两个任务都会产生错误消息:
sed: -e expression #1, char 1: unknown command: `''
第一个列表中的 ' 符号需要转义多少次,最后一个列表中的 " 符号必须转义多少次?我尝试了一次、两次和三次,但都无济于事。有也没有可能会搞砸的隐藏字符。
有什么建议吗?
【问题讨论】:
-
单引号不正确。它们在 shell 上运行命令来引用单词时使用,但当直接执行时(不涉及 shell),它们被视为文字字符并混淆
sed(可以看出)。 -
"我正在使用 Python 进行 sed 删除 / 替换为 ..." 为什么?只需在 Python 中本地执行...
-
据我了解,如果您希望在不创建新文件的情况下就地完成,使用 sed 更简单?
-
可能,如果您将“简单”定义为“实际代码行数最少,但效率较低,因为它会产生额外的进程,以及相关的 fork()、exec()、潜在的磁盘访问和其他开销...”
标签: python unix sed subprocess