如何从Python执行多个bash命令?

2024-04-27 03:36:09 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个grep查询:

grep  "8=ABC\.4\.[24].*\|10=[0-9]+" output.txt |grep "35=8"| cut -d "|" -f 12 >redirect.txt

如何在python脚本中执行相同的操作?我知道对于一个简单的grep,它的工作原理如下:

^{pr2}$

我很困惑如何组合两个grep命令和一个cut命令并将其重定向到输出文件?在


Tags: 文件命令txt脚本outputgrep重定向redirect
2条回答

对于cut,它与grep完全相同。要在结尾重定向到一个文件,只需open()一个文件,并在运行cut命令时将其作为stdout传递。在

正如注释中所述,这些都可以在python中实现,而不需要调用任何东西。但是,如果你想打外部电话,只要像你在例子中那样保持链接。最后一个stdout是一个打开的文件,以完成重定向。请注意,我还关闭了parent side stdout,这样它就不会保留到管道的额外入口点。在

import subprocess as subp

p1 = subp.Popen(["grep", "8=ABC\.4\.[24].*\|10=[0-9]+", "output.txt"],
    stdout=subp.PIPE)
p1.stdout.close()
p2 = subp.Popen(["grep", "35=8"], stdin=p1.stdout, stdout=subp.PIPE)
p2.stdout.close()
p3 = subp.Popen(["cut", "-d", "|", "-f", "12"], stdin=p2.stdout, 
    stdout=open('redirect.txt', 'wb'))
p3.wait()
p2.wait()
p1.wait()

相关问题 更多 >