Linux: awk 內置文字處理 split/substr/length
分類:Linux_Base
基本說明: split(string, array[, field separator]) : 字串,變數名稱,分割符號(預設當前FS) ex: 取出第二個元素,再使用":" 分割字串存成陣一列 ar ,再print 出 ar 第二個元素
echo "123:456 789:abc" | awk '{ split($2,ar,":"); print ar[2]}'
abc
substr(string,p[,n]): 字串,從p開始,長度為n ex: 使用 substr 取出第二個元素, 從第3個字元開始,取1個字元
echo "1234 5678 9abc" | awk '{print substr($2,3)}'
78
echo "1234 5678 9abc" | awk '{print substr($2,3,1)}'
7
length([string]): 返回字串長度,預設為$0 ex:
echo "1234 5678 9abc" | awk '{print length()}'
14
echo "1234 5678 9abc" | awk '{print length($1)}'
4
綜合應用 處理nginx log 1.每10秒的連線計數
cat nginx.log | awk '{ print substr($4,14,7)}' | sort | uniq -c
2.統計IP 使用 class C
cat nginx.log | awk '{ split($1,ipar,".") ; print ipar[1]"."ipar[2]"."ipar[3]".0"}' | sort | uniq -c