こんにちは私は、マカフィーのログファイルをトリムし、 "OKです"と私が見たいと思っていない他の報告されたインスタンスをすべて削除したいと考えています。 grepに-vオプションを利用したシェルスクリプトを使用する前に、今はLinuxとWindowsの両方で動作するpythonスクリプトを書くつもりです。数回の試行の後、私は正規表現をオンラインの正規表現ビルダーで使うことができましたが、スクリプトに実装するのは困難です。 Online REGEX BuilderPythonの逆マッチヘルプ
編集:「OK」、「壊れています」、「ブロック行です」、「ファイルを開くことができませんでした」行を削除したい場合は、私が興味を持ってちょうど問題のシェルでは、このようなのようなののソート:。私は、ファイルのサンプルを
import re
f2 = open(outFilePath)
contents = f2.read()
print contents
p = re.compile("^((?!(is OK)|(file could not be opened)| (is a broken)|(is a block)))*$", re.MULTILINE | re.DOTALL)
m = p.findall(contents)
print len(m)
for iter in m:
print iter
f2.close()
:
grep -v "is OK" ${OUTDIR}/${OUTFILE} | grep -v "is a broken" | grep -v "file could not be opened" | grep -v "is a block" > ${OUTDIR}/${OUTFILE}.trimmed 2>&1
私が読んで、ここでファイルを検索検索しようとしています:
eth0
10.0.11.196
00:0C:29:AF:6A:A7
parameters passed to uvscan: --DRIVER /opt/McAfee/uvscan/datfiles/current -- ANALYZE --AFC=32 ATIME-PRESERVE --PLAD --RPTALL RPTOBJECTS SUMMARY --UNZIP -- RECURSIVE --SHOWCOMP --MIME --THREADS=4 /tmp
temp XML output is: /tmp/HIQZRq7t2R
McAfee VirusScan Command Line for Linux64 Version: 6.0.5.614
Copyright (C) 2014 McAfee, Inc.
(408) 988-3832 LICENSED COPY - April 03 2016
AV Engine version: 5700.7163 for Linux64.
Dat set version: 8124 created Apr 3 2016
Scanning for 670707 viruses, trojans and variants.
No file or directory found matching /root/SVN/swd-lhn-build/trunk/utils/ATIME-PRESERVE
No file or directory found matching /root/SVN/swd-lhn-build/trunk/utils/RPTOBJECTS
No file or directory found matching /root/SVN/swd-lhn-build/trunk/utils/SUMMARY
/tmp/tmp.BQshVRSiBo ... is OK.
/tmp/keyring-F6vVGf/socket ... file could not be opened.
/tmp/keyring-F6vVGf/socket.ssh ... file could not be opened.
/tmp/keyring-F6vVGf/socket.pkcs11 ... file could not be opened.
/tmp/yum.log ... is OK.
/tmp/tmp.oW75zGUh4S ... is OK.
/tmp/.X11-unix/X0 ... file could not be opened.
/tmp/tmp.LCZ9Ji6OLs ... is OK.
/tmp/tmp.QdAt1TNQSH ... is OK.
/tmp/ks-script-MqIN9F ... is OK.
/tmp/tmp.mHXPvYeKjb/mcupgrade.conf ... is OK.
/tmp/tmp.mHXPvYeKjb/uvscan/uninstall-uvscan ... is OK.
/tmp/tmp.mHXPvYeKjb/mcscan ... is OK.
/tmp/tmp.mHXPvYeKjb/uvscan/install-uvscan ... is OK.
/tmp/tmp.mHXPvYeKjb/uvscan/readme.txt ... is OK.
/tmp/tmp.mHXPvYeKjb/uvscan/uvscan_secure ... is OK.
/tmp/tmp.mHXPvYeKjb/uvscan/signlic.txt ... is OK.
/tmp/tmp.mHXPvYeKjb/uvscan/uvscan ... is OK.
/tmp/tmp.mHXPvYeKjb/uvscan/liblnxfv.so.4 ... is OK.
正しい出力が得られません。私はMULTILINEとDOTALLの両方のオプションを削除しようとしましたが、まだ正しい応答を得ていません。以下は、DOTALLとMULTILINEで実行したときの出力です。
9
('', '', '', '', '')
('', '', '', '', '')
('', '', '', '', '')
('', '', '', '', '')
('', '', '', '', '')
('', '', '', '', '')
('', '', '', '', '')
('', '', '', '', '')
('', '', '', '', '')
ご協力いただければ幸いです!ありがとう!!
're.findall'を使用して、取得したすべての値を抽出します。 're.compile(r '^(?:(?!\ b(?:ファイルは開けませんでした|壊れました|ブロックです)\ b)。)+ $'、re.DOTALL | 're.findall'で –
あなたが出力を対象とするものを表示できますか?即座に解決します。 –
私は明らかにしていなかったと思います。私は走っているかのように、 "OK"か "壊れた"のようなもので終わらない行をすべて望みます:grep -v "OK" "$ {OUTDIR}/$ {OUTFILE} | grep -v "が壊れている" | grep -v "ファイルを開くことができませんでした" | grep -v "はブロック"> $ {OUTDIR}/$ {OUTFILE} .trimmed 2>&1 –