我正在尝试从Python文件中运行此命令git status -vv | awk 'NR>5 {print $0}'
。但是我无法使awk命令正常工作。
这是我的git st的示例结果:
# On branch master
# Your branch is ahead of master by 2 commits.
#
#
# modified: file1
# modified: file2
# modified: file3
当我从终端运行命令时,我得到了想要的东西:
# modified: file1
# modified: file2
# modified: file3
我在Python脚本中无法实现它:
import sys
import subprocess as sb
ps = sb.Popen(("git","status","-vv"),stdout=sb.PIPE)
output = sb.check_output(('awk','"NR>5 {print $0}"'),stdin=ps.stdout)
print output
但是,这仅返回git st结果,而不在行上执行awk。我如何在python中执行此操作,以获取与在终端中运行时相同的输出。
以下代码应该可以工作(只需删除awk参数的双引号)
import sys
import subprocess as sb
ps = sb.Popen(("git","status","-vv"),stdout=sb.PIPE)
output = sb.check_output(('awk','NR>5 {print $0}'),stdin=ps.stdout)
print output
这可能更简单:
#!/usr/bin/python3
import sys
import subprocess as sb
cmd = "git status -vv | awk '(NR>5){ print $0 }'"
output = sb.check_output(cmd, stderr=sb.STDOUT, shell=True)
sys.stdout.write('{}'.format(output))