【发布时间】:2013-02-19 06:16:37
【问题描述】:
我有一个目录“/pcap_test”,其中包含多个日志文件。每个文件都有这样的模式:
Pkt:1(358 字节),LIFE:1,应用程序:itunes (INTO),状态:TERMINATED,堆栈:/ETH/IP/UDP/itunes,错误:无
Pkt:2(69 字节),LIFE:2,应用程序:zynga (INTO),状态:INSPECTING,堆栈:/ETH/IP/UDP,错误:无
Pkt:3(149 字节),LIFE:2,应用程序:pizzeria (INTO),状态:TERMINATED,堆栈:/ETH/IP/UDP/pizzeria,错误:无
在这种情况下,我希望输出是第二行,因为“应用程序”中的内容不存在于“堆栈:”中
我编写了一个小的 Python 脚本来遍历目录,打开每个文件并打印 输出:
import os
list = os.listdir("/home/test/Downloads/pcap_test")
print list
for infile in list:
infile = os.path.join("/home/test/Downloads/pcap_test" , infile)
if os.path.isfile(infile):
str = file(infile, 'r').read()
print str
我以某种方式使用 grep 获得了输出,但无法在 python 脚本中使用相同的输出。它类似于:
grep -vP 'App: ([^, ]*) \(INTO\).*Stack: .*\1.*$' xyz.pcap.log | grep -P 'App: ([^, ]*) \(INTO\)'
由于我已经有了名为 "str" 的文件,我想使用它而不是单独的日志文件来获取输出。
我们将非常感谢您在这方面的任何帮助。
【问题讨论】:
标签: python regex grep pattern-matching subprocess