【发布时间】:2014-12-05 22:40:01
【问题描述】:
我正在尝试运行简单的 awk shell 命令并捕获其输出(使用 python2)。 这是我尝试做的:
import subprocess as sb
shell = ["awk '!/<tag>/ {print \"\\"\"$1\"\\"\", \"\\"\"$2\"\\"\"}' test.txt"]
p = sb.check_output(shell, shell=True)
print p
test.txt内容:
a, b, 5
a, c, 3
d, d, 1
我希望使用 awk 获得以下输出并将其存储到变量中:
"a" "b"
"a" "c"
"d" "d"
但是我显然缺乏如何正确处理双引号的知识。我尝试用几个反溅来逃避它们,但这一切都没有奏效。 如何正确转义双引号以使上面的示例正常工作?
【问题讨论】:
-
你用的是哪个版本的python?
-
test.txt 是什么样子的?
-
这里显而易见的事情是不要使用
shell=True,也不要尝试构建一个引用引号等的命令行。如果您不使用任何 shell 功能,为什么要让您的生活更加困难(并且您的代码效率更低、安全性更低、更难调试)? -
显然是python2,因为
print p;)