有人能通过python2.4子进程方法提供正确的语法来运行下面的grep命令吗?你知道吗
# grep -n down /tmp/support/alarms/SS7Alarms.*
/tmp/support/alarms/SS7Alarms.263:8301:LAES: SS7MGR: Association Id 2 is down
/tmp/support/alarms/SS7Alarms.264:7733:LAES: SS7MGR: Association Id 1 is down
/tmp/support/alarms/SS7Alarms.264:7737:LAES: SS7MGR: Association Id 2 is down
/tmp/support/alarms/SS7Alarms.264:12603:LAES: SS7MGR: Association Id 1 is down
/tmp/support/alarms/SS7Alarms.264:12607:LAES: SS7MGR: Association Id 2 is down
/tmp/support/alarms/SS7Alarms.265:6523:LAES: SS7MGR: Association Id 1 is down
/tmp/support/alarms/SS7Alarms.265:6531:LAES: SS7MGR: Association Id 1 is down
/tmp/support/alarms/SS7Alarms.267:10349:LAES: SS7MGR: Association Id 2 is down
/tmp/support/alarms/SS7Alarms.270:11159:LAES: SS7MGR: Association Id 2 is down
/tmp/support/alarms/SS7Alarms.270:13229:LAES: SS7MGR: Association Id 2 is down
/tmp/support/alarms/SS7Alarms.271:13041:LAES: SS7MGR: Association Id 2 is down
我可以得到一个单独的文件:
p = subprocess.Popen(["grep", "-n", "down", "/tmp/support/alarms/SS7Alarms.263"], stdout=subprocess.PIPE)
尝试grep多个文件时失败:
p = subprocess.Popen(["grep", "-n", "down", "/tmp/support/alarms/SS7Alarms.*"], shell=True, stdout=subprocess.PIPE)
>>> Usage: grep -hblcnsviw pattern file . . .
在四处寻找了几个小时之后,我放弃了,在stackoverflow上发布了一些文章,只是为了找出几分钟的测试结果。你知道吗
把完整的命令放到一个字符串中就可以了。你知道吗
没有这样的文件
/tmp/support/alarms/SS7Alarms.*
。必须将每个文件作为单独的参数传递给grep。*
在shell中工作的唯一原因是shell将*
展开为多个参数,然后再将它们传递给grep。你知道吗如果要展开globs,请使用
glob
模块:相反,您可以使用
shell=True
作为Popen
的参数,但这可能会导致其他问题。你知道吗相关问题 更多 >
编程相关推荐