我有一个目录“/pcap_test”,其中包含几个日志文件。每个文件都有一个模式,如:
Pkt:1(358 字节),LIFE:1,应用程序:itunes (INTO),状态:TERMINATED,堆栈:/ETH/IP/UDP/itunes,错误:无
Pkt: 2 (69 bytes), LIFE: 2, App: zynga (INTO), State: INSPECTING, Stack: /ETH/IP/UDP, Error: None
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" 的文件,我想使用它而不是单个日志文件来获取输出。
在这方面的任何帮助将不胜感激。