1.提取日志的上一行:(bshell)
#!/bin/sh
awk '/keyerrors 关键信息/{ print NR}' log.txt | sort -r > LINE.list
rm -f tmp.txt
while read LINE
do
echo $LINE
BE_LINE=`expr $LINE - 1`
echo $BE_LINE
#awk 'NR=="'$LINE'",NR=="'$LINE'"+1 { printf "%s\n", $0 }' log.txt >> tmp.txt
awk 'NR=="'$BE_LINE'" { printf "%s\n", $0 }' log.txt >> tmp.txt
awk 'NR=="'$LINE'" { printf "%s\n", $0 }' log.txt >> tmp.txt
done < LINE.list
2.提取日志下一行:(AWK 脚本)
#!/usr/bin/awk -f
BEGIN {temp=0}
{if(temp!=0) print}
{temp=index($0,"keyerrors 关键信息")}
3. 提取两个关键字之间内容
awk -v flag=0 '{if(flag==1)print}/pattern1/{flag=1;print};/pattern2/{exit}' filename
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/21634752/viewspace-605567/ ,如需转载,请注明出处,否则将追究法律责任。