linux截取日志信息

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删除指定行

# 删除第5行(直接修改文件)
sed -i '5d' filename.log

# 删除第5到第10行
sed -i '5,10d' filename.log

# 删除包含 "error" 的行
sed -i '/error/d' filename.log

# 删除以 "DEBUG" 开头的行
sed -i '/^DEBUG/d' filename.log

# 删除空行
sed -i '/^$/d' filename.log


# 删除同时匹配多个模式的行(例如包含 "error" 或 "warning")
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 提取从 start 到 end 行的内容
awk "NR >= $start && NR <= $end" ./8001.log > ./filtered_log.txt
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值