1. 查某个时间段的所有的日志
awk '/Start time/,/End time/ ' yourLogName.log
例子如下
awk '/2022-05-23 05:58:59,103/,/2022-05-23 05:59:00,024/ ' yourLogName.log
另外一个例子:它将显示所有匹配Sun或sun的行与匹配Moon或moon的行之间的行,并显示到标准输出上。
awk '/[Ss]un/,/[Mm]oon/ ' myfile
2. 杀掉某些进程
ps -aux|grep 'your key words of ps which will be killed'|awk '{print $2}' | xargs kill
3. 查询Log有多少行
grep 'your log key word‘ test.log|wc -l
4. 查某些方法执行了10000秒,或其它某个时间
log的格式如下
****duration=[465775]***?
grep "duration=\[[1-9]\{5,\}\]" test..log
或
grep 'key word' test.log? | awk -F 'duration=\\[' '{print $2}' |awk -F ']' 'BEGIN{total=0; num=0} {if ($1>10000) {total+=$1;num++}} END{print num}'
5. 求某方法执行的平均时间。
log的格式如下
****duration=[465775]***?
grep 'key word' text.log |awk -F 'duration=\\[' '{print $2}' |awk -F ']' 'BEGIN{total=0;} {total+=$1} END{print total/NR}'
6.?显示文本文件myfile中第七行到第十五行中以字符%分隔的第一字段,第三字段和第七字段
awk -F % 'NR>=7,NR<=15 {print $1 $3 $7}' test.log
其它
1. awk
1.1.awk使用
awk 'BEGIN{ commands } /pattern/ {commands} END{ commands }'
1、BEGIN{ commands }开始块就是在程序启动的时候执行的代码部分,并且它在整个过程中只执行一次。一般情况下,我们可以在开始块中初始化一些变量。 注意:开始块部分是可选的,你的程序可以没有开始块部分。 2、/pattern/ {commands}pattern 部分匹配该行内容成功后,才会执行commands 的内容。 3 、END{ commands }结束块是在程序结束时执行的代码。 注意:结束块部分也是可选的
1.2 awk基本用法
选项 | |
---|
-F | -F ',' 或者?-F '正则表达式' ?-F选项来改变字段分隔符 | -v | -va=1 赋值一个用户定义变量a的值为1 | -f | -f scripfile ,从脚本文件中读取awk命令 |
1.3 awk常用系统变量
变量 | 描述(列举常用的,还有很多其他的没怎么常用) | $n? | $1当前记录的第1个字段的内容。和sed中的$1不同,sed表示第一个参数 | $0? | 整行数据的内容 | FS?? ? | 字段分隔符 (默认是空格) | OFS?? ? | 输出字段的分隔符(默认是空格) | RS?? ? | 行分隔符(默认以\n作为一行的结尾),单行分割成多行用到 | NR?? ? | 行号,从1开始,多文件时候也是连续接着计数 | FNR?? ? | 各文件分别计数的行号,多文件的时候会和NR不同,它会重新计数 NF?? ?一行中字段数量,最后一个字段内容可以用$NF取出 | ARGC?? ? | ?命令行参数的数目 | ARGV?? | ?包含命令行参数的数组,第一个参数是命令awk |
|