轉載:http://www.cnblogs.com/chengmo/archive/2010/10/11/1847515.html
awk作為文本處理優秀工具之一,它有獨自豐富的運算子。下面我們一起歸納總結一下,所有運算子。 可以分為:算術運算子,賦值運算子,關係運算子,邏輯預演算法,正則運算子。
一、運算子介紹
| 運算子 |
描述 |
| 賦值運算子 |
| = += -= *= /= %= ^= **= |
指派陳述式 |
| 邏輯運算子 |
| || |
邏輯或 |
| && |
邏輯與 |
| 正則運算子 |
| ~ ~! |
匹配Regex和不匹配Regex |
| 關係運算子 |
| < <= > >= != == |
關係運算子 |
| 算術運算子 |
| + - |
加,減 |
| * / & |
乘,除與求餘 |
| + - ! |
一元加,減和邏輯非 |
| ^ *** |
求冪 |
| ++ -- |
增加或減少,作為首碼或尾碼 |
| 其它運算子 |
| $ |
欄位引用 |
| 空格 |
字串串連符 |
| ?: |
C條件運算式 |
| in |
數組中是否存在某索引值 |
說明:awk運算子基本與c語言相同。運算式及功能基本相同
二、執行個體介紹
a+=5; 等價於:a=a+5; 其它同類
[chengmo@localhost ~]$ awk 'BEGIN{a=1;b=2;print (a>5 && b<=2),(a>5 || b<=2);}'
0 1
[chengmo@localhost ~]$ awk 'BEGIN{a="100testa";if(a ~ /^100*/){print "ok";}}'
ok
如:> < 可以作為字串比較,也可以用作數值比較,關鍵看運算元如果是字串 就會轉換為字串比較。兩個都為數字 才轉為數值比較。字串比較:按照ascii碼順序比較。
[chengmo@localhost ~]$ awk 'BEGIN{a="11";if(a >= 9){print "ok";}}'
[chengmo@localhost ~]$ awk 'BEGIN{a=11;if(a >= 9){print "ok";}}'
ok
說明,所有用作算術運算子 進行操作,運算元自動轉為數值,所有非數值都變為0。
[chengmo@localhost ~]$ awk 'BEGIN{a="b";print a++,++a;}'
0 2
?:運算子
[chengmo@localhost ~]$ awk 'BEGIN{a="b";print a=="b"?"ok":"err";}'
ok
in運算子
[chengmo@localhost ~]$ awk 'BEGIN{a="b";arr[0]="b";arr[1]="c";print (a in arr);}'
0
[chengmo@localhost ~]$ awk 'BEGIN{a="b";arr[0]="b";arr["b"]="c";print (a in arr);}'
1
in運算子,判斷數組中是否存在該索引值。