Linux文本处理工具(grep、awk、sed)

grep

  • 常用命令

grep -i  'hello' test.txt    在test.txt文件中搜索hello关键字,忽略大小写

grep -ril ‘hello’ /home/web   在指定目录下搜索含有关键字hello的文件

grep -C 5 foo file.log   显示file日志里匹配foo字串那行以及上下5行
           grep -B 5 foo file.log   显示foo及前5行
           grep -A 5 foo file.log   显示foo及后5行

grep '# Time:' file.log | wc -l    统计某个关键字出现的次数

           grep -E '2020/10/19' error.log | grep '*499'   查找日期为2020/10/19同时含有*499的日志记录

ps -ef|grep php    查找指定进程

ps -ef|grep -c java    查找指定进程个数

tail -f xxx.log | grep  xxx    过滤后从日志尾部开始输出

tail -f xxx.log | grep --line-buffer xxx | grep --line-buffer yyy    多次过滤后从日志尾部开始输出

 

  • 常用参数

-i   忽略大小写

-c   统计计数

-v   反转匹配

-l    列出匹配的文件名称

-L   列出不匹配的文件名称

-n   输出匹配的行号

-r    在指定目录下搜索

-e   正则匹配

-E   多条件匹配,与:grep -E ‘pattern1.*pattern2’ filename;或:grep -E ‘pattern1|pattern2’ filename

--color=auto   关键字部分加上颜色

 

awk 

  awk 在开始处理文件之前执行 BEGIN 块,在处理完输入文件之后执行 END 块。

  • 常用参数

-F   指定分割符

  • 常用命令

awk  -F":"  '{ print $1 }' /etc/passwd

awk  '$3>0 {print $1,$2*$3}'  test1.txt  test2.txt

awk 'BEGIN {count=0;print "user count is ",count} {count++;print $0} END{print "user count is ",count}' test.log

 

sed

  • 常用参数

a:追加  向匹配行后面插入内容

c:更改  更改匹配行的内容

i:插入  向匹配行前插入内容

d:删除  删除匹配的内容

s:替换  替换掉匹配的内容

  • 常用命令

sed '3ahello' 1.txt   #向第三行后面添加hello,3表示行号

sed '/123/ahello' 1.txt   #向内容123后面添加hello

 

grep+awk 统计分析

grep -E '# Query_time:' slow.log | awk -F  '  '  '{print $3}' | awk '{sum+=$1} END {print sum}'     匹配# Query_time:所在的行,然后以空格分隔输出第三列(即query_time:后的数值),最后求总和输出。

grep -E 'select' slow.log | awk -F 'from|where' '{print $2}' | awk '!a[$0]++' > table.txt   从慢查询日志中找出所有表名,写入table.txt文件。

grep -B 2 'wx_user' slow.log | grep -E '# Query_time:' | awk -F ' ' '{print $3}' | awk '{sum+=$1} END {print sum}'   在日志文件中匹配关键字,找出其所在行及其前两行的内容,然后再匹配# Query_time:所在的行,然后进行分列,对数值列进行求和。

grep -B 2 'app_sap_meeting' slow.log | grep -E '# Query_time:' | awk -F ' ' '{print $3}' | awk '{if ($1>5) print $1}' | sort -nr;   输出执行时间大于5秒的,并反向排序

grep '"time_local":"11/Jul/2019:10:[0-5][0-9]' app-access.log.20190712 | awk -F ',' '{print$3,$8,$4}' > am10_request.log      access日志分析

grep -E ' "status":50[2|3|4|5] ' app-access.log | grep ' "time_local":"11/Jul/2019:10:[0-5][0-9] ' | awk -F ',' '{print$3,$6,$4,$8}' | sort -nr > am10_502.log    error日志分析

           grep -B 2 'app_sap_meeting' 201905_slow.log | grep -E '# Query_time:' | awk -F ' ' '{print $3}' | awk '{if ($1>5) print $1}' |sort -nr;  

            grep -A 2 '29.730785' slow.log; 

 

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值