Linux文档查询笔记

征服Linux 2017-03-22

查询文本内容

示例文本

1.001 08:07:49 192.168.1.1 timeout fore webserver/server01  200  120  

2.002 08:07:49 192.168.1.1 timeout fo webserver/server01  200  230

3.003 08:38:49 192.168.1.1 timeout for webserver/server02  404  340

4.004 08:49:49 192.168.1.5 timeout for webserver/server02  503  450

5.005 09:01:49 192.168.1.9 timexxx for webserver/server02  504  560

截取

1.cat t.log |awk '{print $(NF-1)}'            #默认空格为分隔符,截取倒数第二个字段

2.cat t.log |awk -F' |/' '{print $7}'             #空格或者/作为分隔符截取

3.cat t.log |awk 'BEGIN{FS=" |/"}{print $7}' #同上 

4.cat t.log |awk -F"webserver/" '{print $2}' #关键字作为分割符截取

匹配&比较

1.cat t.log |awk '{if ($5 ~ /for/) print $0}'                  #包含    1,3,4,5

2.cat t.log |awk '{if ($5 !~ /for/) print $0}'                 #不包含  2

3.cat t.log |awk '{if ($5 = "for") print $0}'                  #替换(显示)

4.cat t.log |awk '{if ($5 == "for") print $0}'                 #等于    3,4,5

5.cat t.log |awk '{if ($5 != "for") print $0}'                 #不等于  1,2

6.cat t.log |awk '{if ($2 ~ /08:0[0-9]/) print }'              #正则匹配,第二字段时间为8:00-8:09 1,2

7.cat t.log |awk '{if ($7==200 && $NF<150) print }'         #并且,第七字段等于200并且最后一字段小于150    1

8.cat t.log |awk '{if ($7==503||$7==504) print}'               #或者,第列等于503或者是504   4,5

9.cat t.log|awk '!a[$3]++'                                     #去重,第三列为key去重 1,4,5

运算&统计

1.cat t.log |awk 'BEGIN{sum=0}{sum+=$8}END{print sum}'                                 #求和,第六列求和  1700

2.cat t.log |awk 'BEGIN{sum=0;num=0}{sum+=$8;num+=1}END{print "avg:" sum/num}'  #求平均值,求列平均值  340

3.cat t.log |awk '{ii[$3]++}END{for (i in ii){print ii[i],i}}'                         #统计次数,统计第三字段为key出现次数 

4.cat t.log |awk  '{s+=gsub(/timeout/,"&")}END{print s,"timeout"}'                   #统计次数,统计关键字timeout字符串出现次数  4 timeout

5.

1.#判断,正则,统计,数组

2.#$11不为三位数字,然后统计出现次数

3.cat ha.log-20150322 |awk --posix '

4.{if ($11 !~ /[[:digit:]]{3}/) ii[$11]++}

5.END{for (i in ii) print ii[i],i}

6.'

相关推荐