oracle 检查日志文件并打印在其中发现的错误的Shell脚本

wqlqzqxt  于 2023-11-17  发布在  Oracle
关注(0)|答案(1)|浏览(163)

我是一个很新的shell脚本。我试图写一个脚本来检查日志文件的错误(错误字符串是硬编码的),我必须打印包含错误的行。我能够写逻辑,但需要指针从用户输入读取文件。
多谢帮忙谢谢。

逻辑:

1.接受来自用户的日志文件补丁
1.检查日志文件是否存在
1.如果存在,则搜索文件中包含错误字符串的行(例如,Error,ORA)
1.打印包含错误字符串的行,并将输出写入日志文件
从用户读取日志文件
设置错误字符串

search="ERROR"

字符串
设置输出文件的路径

outfile="file1.txt"

执行逻辑

find "$mydir" -type f -name "$filename" |while read file
  do
    RESULT=$(grep "$search" "$file")
      if [[ ! -z $RESULT ]]
         then
            echo "Error(s) in $file: $RESULT" >> "$outfile"
     fi
  done

wnavrhmk

wnavrhmk1#

我不知道你说的“需要指针从用户输入中读取文件”是什么意思。我假设“指针”是脚本参数。
你可以使用这个脚本:

#!/bin/bash
expected=outfile
for f in $@
do
  if [ "$expected" = outfile ]; then
      OUTFILE=$1
      expected=search
  elif [ "$expected" = search ]; then
      SEARCH=$2
      expected=files
  elif [[ -f $f ]]; then
      RESULT=`grep "$SEARCH" $f`
      if [ -n "$RESULT" ]; then
           echo -e "\n"
           echo "Error(s) in "$f":"
           echo $RESULT
           echo -e "\n" >> $OUTFILE
           echo "Error(s) in "$f":" >> $OUTFILE
           echo $RESULT >> $OUTFILE
      fi
  fi
done

字符串
用以下方法进行验证:

scriptname outfile search files


其中:

  • scriptname:包含脚本的文件名。
  • outfile:输出文件的名称
  • search:要搜索的文本
  • 文件:一个或多个文件名或文件模式。

示例(我假设脚本的名称是searcherror,并且它位于系统路径中):

searcherror errorsfound.txt primary /var/log/*.log

searcherror moreerrors.txt "ORA-06502" file1.log /var/log/*.log ./mylogs/*

相关问题