awk是報告生成器
awk是原作者:aho,Weinberger,Kernighan三個人首字母的縮寫
awk是指向gawk的符號鏈接
awk是獨立的編程語言,
模式:類似地址定界
$0表示整個一行
$1$2$3$4,表示每個由空格分開的單位
-F char 是分隔符
awk [選項] ‘program’ file
awk [選項] ‘pattern{action}’ file
支持變量:
內置變量,自定義變量
內置變量:
FS:輸入時字段分隔符
Rs:輸入時行分隔符
OFS:輸出時字段分隔符
ORS:輸出時行分隔符
NF:一個行裏的字段數
NR:文件裏的行數
FNR:顯示每個文件的行號
awk –F: ‘{print $1,$NF}’ /etc/passwdd等同於下邊的命令
awk –v FS=: ‘{print $1,$NF}’ /etc/passwd
自定義變量
printf命令:
printf format,item1,item2
format的可選項:
%c:顯示字符的ASCII碼
%d,%i:顯示十進制
%e,%E:科學技術法顯示數值
%f:顯示字符串
%g,%G:以科學技術法格式或浮點數格式顯示數值
%s:顯示字符串
%u:顯示無符號整數
%%:顯示%自身
修飾符:
#:寬度
-左對齊
+顯示數值符號
.#取精度值
注意 : print不會顯示出%d的含義,只會顯示字符
算術運算:+,-,*,/,+=,-=,*=,/=
如果自身是=,要寫成/=/
比較操作符:
<
<=
>
>=
==
!=
~左邊字符串能匹配右邊模式爲真
!~對上一個命令取反
三目操作符:
pattern,模式:
1、正則:/pattern/
2、表達式:
3、行範圍,地址定界startline endline等,用NR來做判斷
4、BEGIN/END特殊模式,表示之前(BEGIN)或之後(END)運行1次
5、空模式,匹配任意行,默認模式
action
1、表達式
2、控制語句 if-else,
if(條件){then body}else{else body}
do-while
死循環啦。
while
for
case
3、組合語句
4、輸入語句
5、輸出語句print,printf
循環控制:break,continue,next
next,提前進入對下一行的處理!!
數組:
傳統數組:索引從1開始
關聯數組
for(var in array),array是索引
這個用法很常用,統計同一字段的不同名稱的數量
內置函數:
length(string),求string長度
split(目標字符串,分隔後存放位置,分隔符)分隔字符串
substr取子串