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