从日志文件

时间:2015-12-04 07:51:20

标签: bash

从日志文件中删除例外

 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

我需要在循环的每次迭代中从输入文件中删除这些行

上面的脚本不会在每次循环迭代中过滤输入文件中的记录。

还有其他有效的方法吗

由于

我有这个例外列表    cat 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

2 个答案:

答案 0 :(得分: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

答案 1 :(得分:0)

while true
do
    nc 192.168.1.38 23 >> results
    nc 192.168.1.39 4501 >> results
    nc 192.168.1.40 8080 >> results
done