いくつかのログ ファイルを含む "/pcap_test" ディレクトリがありました。各ファイルには次のようなパターンがあります。
パケット: 1 (358 バイト)、LIFE: 1、アプリ: itunes (INTO)、状態: TERMINATED、スタック: /ETH/IP/UDP/itunes、エラー: なし
Pkt: 2 (69 バイト)、LIFE: 2、アプリ: zynga (INTO)、状態: INSPECTING、スタック: /ETH/IP/UDP、エラー: なし
パケット: 3 (149 バイト)、ライフ: 2、アプリ: ピッツェリア (INTO)、状態: 終了、スタック: /ETH/IP/UDP/ピッツェリア、エラー: なし
この場合、「App」のコンテンツが「Stack:」に存在しないため、出力を 2 行目に表示したいと考えています。
ディレクトリを反復処理し、各ファイルを開いて出力を出力する小さな 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" という名前のファイルが既にあるので、個々のログ ファイルではなく、それを使用して出力を取得します。
この点でどんな助けも高く評価されます。