2015-12-04 202 views
0

從日誌文件中刪除例外從日誌文件中刪除例外

cat ignore_err.txt|grep -v "^#"| while read line; 
    do 
    cp atln_output_err.txt atln_output_err.txt.bak4 ; 
    echo "start ....... $line "; 
    sed '/$file/d' atln_output_err.txt >out.txt 
    mv out.txt atln_output_err.txt 
    echo "end ....... $line "; 
    done 
start ....... \} INFO aop\: 
end ....... \} INFO aop\: 
start ....... Not able to find an user based on email address 
end ....... Not able to find an user based on email address 

我需要在循環

上面的腳本不會過濾來自輸入文件記錄在每次迭代中的每個迭代刪除輸入文件中的這些行的循環。

是否有任何其他有效的方式來做到這一點

感謝


我有這樣的例外列表 貓ignore_err.txt

#aop:83 - Entering AccessController.msb3IeError 
#aop:83 - Leaving AccessController.msb3IeError 
#\\} DEBUG aop\\: 
\\} INFO aop\\: 
Not able to find an user based on email address 

我想過濾日誌有這些關鍵字的文件(atln_output_err.txt)包含

我想如果你把所有的錯誤關鍵字在一個名爲文件來實現這個

cat atln_output_err.txt | grep -v "\} INFO aop\:" | grep -v "Not able to find an user based on email address" >a.txt 

+0

您將需要澄清你的問題,因爲它是一個爛攤子。正是你所需要清除?從預期輸出分開的代碼。還你一個沒用'cat',你應該用grep文件本身'grep的-v「^#」 ignore_err.txt' –

回答

0
grep -v "^#" ignore_err.txt| while read i; 
do 
grep -v "$i" log_err.txt >out.txt 
mv out.txt log_err.txt 
done 
2

error_keyword.txt(換行分隔)

_要獲得所有日誌條目沒有這些匹配錯誤關鍵字:

grep -v -F -f error_keyword.txt log.txt 

_要獲取與錯誤關鍵字匹配的所有日誌條目:

grep -i -F -f error_keyword.txt log.txt 

  • -v會給你一個不匹配的輸入文件(-f)
  • -i會給你匹配輸入文件(-f)
  • -F將解釋的條目項以純文本輸入模式(避免的特殊字符解釋)

然後你就可以重定向到一個文件:

grep -v -F -f error_keyword.txt log.txt > log_without_errors.txt