標籤:style blog 使用 ar 資料 html log sp new
【著作權聲明:轉載請保留出處:blog.csdn.net/gentleliu。Mail:shallnew at 163 dot com】
在大多數情況下 awk 的 print 語句可以完成任務,但有時我們還需要更多。在那些情況下,awk 提供了兩個我們熟知的函數 printf() 和 sprintf()。是的,如同其它許多 awk 組件一樣,這些函數等同於相應的 C 語言函數。printf() 會將格式化字串列印到 stdout,而 sprintf()函數返回根據printf格式說明指定的格式化的字串,它格式化資料但不輸出資料。a w k提供函數p r i n t f,擁有幾種不同的格式化輸出功能。例如按列輸出、靠左對齊或靠右對齊方式。
printf()函數基本文法是printf()(”格式控制符“,參數) ,格式控制字元通常在引號裡。類似C語言,awk printf格式有如下:
% c A S C I I字元
% d 整數
% e 浮點數,科學記號標記法
% f 浮點數,例如(1 2 3 . 4 4)
% g awk決定使用哪種浮點數轉換 e或者f
% o 八位元
% s 字串
% x 十六進位數
下面來試試這些個格式:
# echo 97 | awk '{printf("%c\n", $0)}' A
像C語言一樣,換行需要加“\n”。
# echo 97 | awk '{printf("%d\n", $0)}'97# echo 97 | awk '{printf("%f\n", $0)}'97.000000# echo 97 | awk '{printf("%e\n", $0)}'9.700000e+01# echo 97 | awk '{printf("%s\n", $0)}'97
類似C語言的格式化輸出:
# awk 'BEGIN{FS=":"}{printf("%-15s%s\n", $1, $3)}' group_file2wireshark 987usbmon 986jackuser 985vboxusers 984aln 1001
sprintf()函數返回根據printf格式說明指定的格式化的字串,它格式化資料但不輸出資料。所以需要將sprintf返回的資料儲存在變數裡面再輸出。
# awk 'BEGIN{FS=":";ORS=""}{var=sprintf("%s\n", $1);print var}' group_file2wiresharkusbmonjackuservboxusersaln
其他的用法和C語言類似。
shell文本過濾編程(五):awk之printf