歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux基礎 >> Linux教程 >> Linux awk使用

Linux awk使用

日期:2017/2/28 15:40:54   编辑:Linux教程

分析日志文件

課前基礎: awk基本使用

awk ' BEGIN{ print "start" } {commands} END{ print "end" }'

先執行BEIGN語句,然後重復的執行commands行,直到文件全部讀取完畢,讀取文件末尾時,執行END語句塊。

這個語句可以沒有BEGIN、END但是必須有{commands}

1、awk特殊變量:

NR:記錄數量,在執行過程中對應於當前行號

NF:表示字段數目,執行過程中對應於當前行的字段數

$0:執行行中的文本內容

$1:包含第一個字段的文本內容

$2:包含第二個字段的文本內容

2、將外部變量傳遞給awk:

借助於-v參數

3、對awk的行進行過濾

awk 'NR <5' 行號小於5;awk 'NR==1,NR==4' 行號在1到5之間的行

4、awk自建的內置函數

split、length、substr等等

5、設置字段定界符

默認的是空格,我們可以使用-F '分隔符'

demo演示:

  1. #!/bin/bash
  2. echo $1;
  3. grep $1 /data/logs/login-resin-stdout.log|awk -F ' ' '{ arr[split($21,tmp,":")];print tmp[2] }'
  4. |awk -v var_1=$2 '{arr[$i]++;}END{for (i in arr){if(arr[i]>var_1){print i,arr[i]}}}'

表示的是先文本先按變量$1過濾,然後文本行按照空格分隔,此文本被分成21段,然後將第21段的字符按照字符':'分隔,得到 的數組只要第2的值(注意該數組標量是從1開始),然後統計得到的值重復的次數。

Copyright © Linux教程網 All Rights Reserved