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为空格
参考:
Linux下日志文本筛选技巧-阿里云开发者社区 (aliyun.com)
Linux 打印文本部分行内容(前几行,指定行,中间几行,跨行,奇偶行,后几行,最后一行,匹配行) - 腾讯云开发者社区-腾讯云 (tencent.com)
标签:log,sql,hadoop,sed,Linux,日志,文本 From: https://www.cnblogs.com/zjfjava/p/17192277.html