3、awk的printf命令
格式:printf format, item1 item2…
要點:
(1) 要指定format;
(2) 輸出時不會自動換行,如需換行則需要給出\n;
(3) format用于為后面的每個item指定其輸出格式;
(4) format格式的指示符都是%開頭,后跟一個字符。
format常用的字符:
%c:顯示字符的ASCII碼
%d,%i:十進制整數;
%e,%E:科學計數法;
%f:顯示浮點數;
%g,%G:以科學計數法格式或浮點數格式顯示數值;
%s:顯示字符串;
%u:顯示無符號整數;
%%:顯示%自身。
format中常用修飾符:
#:顯示寬度;
-:左對齊;
+:顯示數值的符號;
.#:取值精度。
實例1:以固定寬度20輸出/etc/passwd文件中前10條記錄的用戶名和shell信息:
上例中標注的部分含義為:兩個字段都是以20個字符的寬度來顯示,并且以換行符為每行的結束符。
實例2:將上例中的用戶名以左對齊顯示:
實例3:將3.14159取2位小數顯示:
4、awk的操作符
算術操作符:
x+y:加
x-y:減
x*y:乘
x/y:除
x**(^)y:乘方
x%y:取模
-x:負值
+x:轉換為數值
字符串操作符:
連接:無需符號,直接將兩個字符串放在一起就可以了;
賦值操作符:
x=y:將y的值賦值給x;
x+=y:將x+y的結果賦值給x;
x-=y:將x-y的結果賦值給x;
x/=y:將x除以y的結果賦值給x;
x%=y:將x與y取模的結果賦值給x;
x^=y或x**=y:將x取y次方的結果賦值給x;
x++:將x+1的結果賦值給x;
x–:將x+1的結果賦值給x;
注:如果模式自身是=號,要寫為/=/
比較操作符:
x<y:如果x小于y則為真;
x<=y:如果x小于等于y則為真;
x>y:如果x大于y則為真;
x>=y:如果x大于等于y則為真;
x==y:如果x等于y則為真;
x~y:模式匹配,x能夠被y模式所匹配為真。
邏輯操作符:
x&&y:如果x為真則執行y;
x||y:如果x為假則執行y。
條件表達式:
selector ?if-ture-expression: if-false-expression
selector:條件
?if-ture-expression:如果為真則執行此表達式
:if-false-expression:否則執行此表達式
實例4:判斷/etc/passwd文件中uid大于500則顯示為"Common user",否則顯示為“admin user":
5、模式
(1)正則表達式
格式:/PATTERN/
實例5:只顯示/etc/passwd文件中存在root的行:
(2)表達式
以比較表達式居多,其結果為非0或非空字符串時滿足條件,awk僅處理滿足條件的行。
實例6:只顯示uid大于等于500的行:
(3)特殊模式
BEGIN:在awk命令的program運行之前執行一次;
END:在awk命令的program運行之后執行一次。
實例6:顯示/etc/passwd文件中以root開頭的行的用戶名在人、UID、shell信息,顯示時以逗號分隔各字段,并在輸出結果后打印“THE END”。
(5)空模式
用于匹配任意行。
原創文章,作者:petmaster,如若轉載,請注明出處:http://www.www58058.com/10460