Linux下日志文本筛选技巧

本文涉及的产品
日志服务 SLS,月写入数据量 50GB 1个月
简介: Linux下采用正则、sed、awk工具筛选过滤日志,特别是日志文件较大,在windows下面文本编辑器基本打不开时,Linux的强大的功能就非常明显了。

1.从全量日志中截断部分日志

#1.截取末尾10000行
tail -1000 /data/logs/hadoop/hadoop-zkfc.log > cut1w.log
#2.按照时间范围截取日志
sed -n '/2020-08-09 01:59/,/2020-08-09 11:14:24/p' hadoop.log > cut10h.log
#3.搜索关键字截取日志
tail -10000 /data/logs/hadoop/hadoop-zkfc.log | grep SERVICE_NOT_RESPONDING > cutservice.log
#4.正则匹配截取超过5000ms的rpc日志
cat hadoop-zkfc.log* | grep 'took 5[0-9][0-9][0-9] milliseconds' > nnSlowRpc5s.log
#5.正则匹配多个字符串
grep -E "varchar|Slow RPC" tempsql.sql >nnSlowRpc5s.log
#6.指定打印3-6行
 sed -n '3,10p' hadoop-zkfc.log //打印3~10行

2.sed列式选择筛选日志
如下csv文件内容:
"1234","jd_newmember","awktest-jDGoWzFjnfhryGX5AepcE","0.9999"
"1234","jd_newmember","awktest-jD5koAx9Jl8R-4SexpcrM","0.9999"
"1234","jd_newmember","awktest-Du5bjYaSN6TrxOIgfpw0","0.9999"
"1234","jd_newmember","awktest-jDoV83iydyKjTtPNgaCYM","0.9999"
"1234","jd_newmember","awktest-jDlN4vlz-mOzfDlr4pae4","0.9999"
需要选择出第三列,常规方法可以使用xls,选择第三列,然后批量替换掉双引号,用awk可以一次性完成。对于规律的用逗号分隔的可以用xls筛选列,当分隔符不规律时awk的强大就体现出来了,可以FS指定任意的分隔符。

#FS指分隔符 "," , $3是打印按照分隔符\",\"的第三列
awk 'BEGIN {FS="\",\""} {print $3}' test_JDnewmember.csv > jd_filter.csv

3.more、less日志翻页搜索

在简单的翻看Linux上的日志时也可以用more、less,翻页是Ctrl+f,前一页是Ctrl+b,搜索用斜杠/,跳转到下一个是n,基本上指令与vim的一致。

more hadoop.log

4.替换内容

#1.替换行尾1个以上的空格
[ ^t]+$
#0.匹配1个或者多个空格
[ ^]+
#1.替换行尾1个以上的空格
[ ^]+$
#2.行首多个空格
^[ ^]+
#3.替换换行符和回车符,可以使用notepad++的“扩展”,常见的Windows换行是由回车符合换行符一起组成 \r\n,Linux默认是\n,Mac默认是\r。
\r\n
#4.匹配包含字符串“MemberLatestSmsTime”的整行。
^.*MemberLatestSmsTime.*$
#匹配连续数字+多个字符到行尾,'[0-9]+':多个连续数字,'.*':多个字符,'$':行尾。“eventHdfsBolt-30-36-1572491424981.txt 8144 bytes, 1 block(s),”
[0-9]+ bytes.*$
#当文件比较大,只能在Linux上面处理时可以用sed来批量替换
sed 's/long/field/g' select* > selectAll.xml //替换字符long为field 
sed 's/tmp/UPDATE tasks/g' temp3.sql > temp4.sql //替换字符tmp为目标字符  
sed 's/^/Head/g' temp3.sql > temp5.sql //添加到行首  
sed 's/$/&TAIL/g' test.file //添加到行尾  
sed 's/`//1' temp08-final.sql > temp09-update.sql #替换第一个匹配的字符  
awk 'BEGIN{OFS=" "}{print $1,$2,$3,$4,$4 }' temp05.sql //指定输出域符号OFS为空格
相关实践学习
通过日志服务实现云资源OSS的安全审计
本实验介绍如何通过日志服务实现云资源OSS的安全审计。
相关文章
|
3月前
|
监控 Linux 应用服务中间件
linux查看日志文件tail -f用法
在 Linux 中,查看和监控日志文件是系统管理员和开发者常用的操作之一。tail 命令就是用来查看文件内容的,它默认显示文件的最后部分。tail -f 是 tail 命令的一个非常有用的选项,用于实时查看和跟踪日志文件的更新,尤其是在监控运行中的服务时非常有用。
544 0
|
7月前
|
监控 Shell Linux
Android调试终极指南:ADB安装+多设备连接+ANR日志抓取全流程解析,覆盖环境变量配置/多设备调试/ANR日志分析全流程,附Win/Mac/Linux三平台解决方案
ADB(Android Debug Bridge)是安卓开发中的重要工具,用于连接电脑与安卓设备,实现文件传输、应用管理、日志抓取等功能。本文介绍了 ADB 的基本概念、安装配置及常用命令。包括:1) 基本命令如 `adb version` 和 `adb devices`;2) 权限操作如 `adb root` 和 `adb shell`;3) APK 操作如安装、卸载应用;4) 文件传输如 `adb push` 和 `adb pull`;5) 日志记录如 `adb logcat`;6) 系统信息获取如屏幕截图和录屏。通过这些功能,用户可高效调试和管理安卓设备。
|
10月前
|
存储 运维 监控
Linux--深入理与解linux文件系统与日志文件分析
深入理解 Linux 文件系统和日志文件分析,对于系统管理员和运维工程师来说至关重要。文件系统管理涉及到文件的组织、存储和检索,而日志文件则记录了系统和应用的运行状态,是排查故障和维护系统的重要依据。通过掌握文件系统和日志文件的管理和分析技能,可以有效提升系统的稳定性和安全性。
253 7
|
10月前
|
监控 安全 Linux
启用Linux防火墙日志记录和分析功能
为iptables启用日志记录对于监控进出流量至关重要
311 1
|
11月前
|
监控 Linux 开发者
如何在 Linux 中优雅的使用 head 命令,用来看日志简直溜的不行
`head` 命令是 Linux 系统中一个非常实用的工具,用于快速查看文件的开头部分内容。本文介绍了 `head` 命令的基本用法、高级用法、实际应用案例及注意事项,帮助用户高效处理文件和日志,提升工作效率。
219 7
|
11月前
|
Linux 开发工具
linux文本管理命令
本文档介绍了Linux系统中常用的文本处理命令,包括`echo`、`cat`、`head`、`tail`、`wc`、`less`、`grep`以及重定向符号的使用方法和练习题。此外,还详细讲解了VIM编辑器的特点、工作模式、常用快捷键和高级技巧,帮助用户高效地进行文本编辑和处理。
247 4
|
监控 网络协议 安全
Linux系统日志管理
Linux系统日志管理
352 3
|
缓存 NoSQL Linux
【Azure Redis 缓存】Windows和Linux系统本地安装Redis, 加载dump.rdb中数据以及通过AOF日志文件追加数据
【Azure Redis 缓存】Windows和Linux系统本地安装Redis, 加载dump.rdb中数据以及通过AOF日志文件追加数据
280 1
【Azure Redis 缓存】Windows和Linux系统本地安装Redis, 加载dump.rdb中数据以及通过AOF日志文件追加数据
|
Linux Shell
10-10|linux命令查询 关键字在文本中出现的行数
10-10|linux命令查询 关键字在文本中出现的行数
|
监控 Linux 测试技术
Linux系统命令与网络,磁盘和日志监控总结
Linux系统命令与网络,磁盘和日志监控总结
187 0