0.先查看服务器有没有sed,awk,perl命令
which sed
1. 通过grep查看关键信息的行数
grep -n '6c15663908844e91915592d2cbfdf4c0' ./test.log
2. 通过sed截取指定行信息到新文件
sed -n '865688,899698p' ./test.log > ./new_log.txt
3. 通过awk截取指定行信息到新文件
awk 'NR >= 865688 && NR <= 899698' ./test.log > test.txt
4. 通过perl截取指定标签中的内容
perl -0777 -ne 'while (/<FILE_VALUE>(.*?)<\/FILE_VALUE>/gs) {print $1,"\n";}' ./new_log2.txt > output_file.txt
5. 通过sed去掉指定字符串
sed 's/"xxx"\.//g' T_FILE_EXTRA_INFO.sql.bak > new_example.sql
6. 通过awk去掉指定字符串
awk '{gsub(/"TIMS_GUIAN"\./, ""); print}' example.txt > new_example.txt
7. 通过sed删除指定行
sed -i '5d' filename.log
sed -i '5,10d' filename.log
sed -i '/error/d' filename.log
sed -i '/^DEBUG/d' filename.log
sed -i '/^$/d' filename.log
sed -i -e '/error/d' -e '/warning/d' filename.log
8. 按照日志第一位日期截断日志
awk -v date="2025-05-01" '$1 == date {if (!start) start=NR; end=NR} END {print "Start: " start ", End: " end}' ./8001.log
read start end < <(awk -v date="2025-05-01" '$1 == date {if (!start) start=NR; end=NR} END {print start, end}' ./8001.log)
awk "NR >= $start && NR <= $end" ./8001.log > ./filtered_log.txt