shell匹配指定内容写入到新文件

shell匹配指定内容写入到新文件

#!/bin/sh
echo "开始分析"
SRC=./boot.log
DES=./s1.log
DATELOG=$(date +'%Y-%m-%d')

#********输出匹配字段的上下文内容***********
#获取提交接口日志
function commitlog()
{
  srclog=$SRC
  deslog=$DES
  echo '读取log'
  echo 'commitlog' >> $deslog
  #grep 参数解释
  # -B:输出匹配行的前面几行
  # -A:输出匹配行的后面几行
  # -E:grep的正则表达式,根据正则匹配需要的内容。
  # $DATELOG'.*Started' :表示匹配同时满足多个条件的内容,这里是匹配时间和关键字都满足的情况下才会输出。
  # $DATELOG'.*Started' :其中$DATELOG 因为是变量所以放到正则单引号外面。和正则单引号内的字符串区分。
  # $DATELOG'.*Started' :$DATELOG 和'.*Started'之间的 .* 表示从时间到关键字之间的任意字符都匹配。
  grep -B1 -A5 -nE $DATELOG'.*Started' $srclog  >> $deslog
  format
  echo '写入完毕'

}

#获取更新接口日志
function updatelog()
{
  srclog=$SRC
  deslog=$DES
  echo 'updatelog' >> $deslog
  echo '读取log'
  grep -B1 -A5 -nE $DATELOG'.*Stopped' $srclog  >> $deslog
  format
  echo '写入完毕'

}

#********只输出匹配字段的时间*******
function datelog()
{
  srclog=$SRC
  deslog=$DES
  echo '读取log'
  grep -nE '2019-09-11.*Started' $srclog |awk '{print $1}' >> $deslog
  echo '写入完毕'
  format

}

function format()
{
  echo "" >> $deslog
  echo "################################################" >> $deslog
  echo "" >> $deslog
}

commitlog
updatelog
发布了268 篇原创文章 · 获赞 104 · 访问量 39万+

猜你喜欢

转载自blog.csdn.net/m0_38039437/article/details/100751959
今日推荐