日志等大文件定位并提取中间一部分文本
日志等大文件定位并提取中间一部分文本
- 如tomcat文件catalina.out
# 获取内容最后一行行号 x
x=$(awk '/最后一行关键字/ {print NR; exit}' catalina.out)
# 将catalina.out前x行输出为1.txt文件
head -n $x catalina.out > 1.txt
# 获取内容最前一行行号 y
y=$(awk '/最前一行关键字/ {print NR; exit}' 1.txt)
# 将1.txt前x行输出为2.txt文件 tail -n x-y 1.txt > 2.txt
awk "NR>=$x && NR<=$y" 1.txt > 2.txt
a=$(grep -m 1 -n '^17:00:0' 2.txt | cut -d: -f1)
head -n $a 2.txt > 3.txt
b=$(grep -m 1 -n '^16:00:0' 3.txt | cut -d: -f1)
awk "NR>=$a && NR<=$b" 3.txt > 4.txt