awk中printf的用法


printf函數

 

打印輸出時,可能需要指定字段間的空格數,從而把列排整齊。在print函數中使用制表符並不能保證得到想要的輸出,因此,可以用printf函數來格式化特別的輸出。

printf函數返回一個帶格式的字符串給標准輸出,如同C語言中的printf語句一樣。printf語句包括一個加引號的控制串,控制串中可能嵌有若干格式說明和修飾符。控制串后面跟一個逗號,之后是一列由逗號分隔的表達式。printf函數根據控制串中的說明編排這些表達式的格式。與print函數不同的是, printf不會在行尾自動換行。因此,如果要換行,就必須在控制串中提供轉義字符\n。

每一個百分號和格式說明都必須有一個對應的變量。要打印百分號就必須在控制串中給出兩個百分號。請參考print轉義字符和printf修飾符。格式說明由百分號引出,另外還列出了printf所用的格式說明符。

printf使用的轉義字符

轉義字符 定義
c 字符
s 字符串
d 十進制整數
ld 十進制長整數
u 十進制無符號整數
lu 十進制無符號長整數
x 十六進制整數
lx 十六進制長整數
o 八進制整數
lo 八進制長整數
e 用科學記數法(e 記數法)表示的浮點數
f 浮點數
g 選用e或f中較短的一種形式

 

printf的修飾符

字符 定義
- 左對齊修飾符
# 顯示8 進制整數時在前面加個0
顯示16 進制整數時在前面加0x
+ 顯示使用d 、e 、f 和g 轉換的整數時,加上正負號+或-
0 用0而不是空白符來填充所顯示的值

 

printf的格式說明符

格式說明符 功能
%c 打印單個ASCII 字符
printf("The character is %c\n",x)
輸出: The character is A
%d 打印一個十進制數
printf("The boy is %d years old\n",y)
輸出:The boy is 15 years old
%e 打印數字的e 記數法形式
printf("z is %e\n",z) 打印: z is 2.3e+0 1
%f 打印一個浮點數
printf("z is %f\n", 2.3 * 2)
輸出: z is 4.600000
%o 打印數字的八進制
printf("y is %o\n",y)
輸出:z is 17
%s 打印一個字符串
print("The name of the culprit is %s\n",$1)
輸出:The name of the culprit is Bob Smith
%x 打印數字的十六進制值
printf("y is %x\n",y)
輸出:x is f

 

打印變量時,輸出所在的位置稱為"域"(field),域的寬度(width)是指該域中所包含的字符個數。下面這些例子中, printf控制串里的管道符(豎杠)是文本的一部分, 用於指示格式的起始與結束。
范例

echo "Linux" | awk '{printf "|%-15s|\n",$1}'
|Linux          |

說明:對於echo命令的輸出,Linux是經管道發給awk。printf函數包含一個控制串。百分號讓printf做好准備,它要打印一個占15個格、向左對齊的字符串,這個字符串夾在兩個豎杠之間,並且以換行符結尾。百分號后的短划線表示左對齊。控制串后面跟了一個逗號和$1。printf將根據控制串中的格式說明來格式化字符串Linux。

范例

echo "Linux" | awk '{printf "|%15s|\n",$1}'
|          Linux|

說明:字符串Linux被打印成一個占15 格、向右對齊的字符串,夾在兩個豎杠之間,以
換行符結尾。

范例

cat employees
Tom   Jones 4424 5/12/66 543354
Mary  Adams 5346 11/4/63 28765
Sally Chang 1654 7/22/54 650000
Billy Black 1683 9/23/44 336500
$ awk  '{printf "The name is: %-15s ID is %8d\n",$1,$3}' employees
The name is Tom             ID is 4424
The name is Mary            ID is 5346
The name is Sally           ID is 1654
The name is Billy           ID is 1683

說明:要打印的字符串放置在兩個雙引號之間。第一個格式說明符是%-15s,它對應的參數是$1,緊挨着控制串的右半邊引號后面的那個逗號。百分號引出格式說明:短划線表示左對齊,15s表示占15格的字符串。這條命令用來打印一個左對齊、占15格的字符串,后面跟着字符串的ID和一個整數。

格式:%8d表示在字符串的這個位置打印$2 的十進制(整數)值。這個整數占8格,向右對齊。您也可以選擇將加引號的字符串和表達式放在圓括號里。

 
原文地址:http://www.linuxawk.com/jiaocheng/83.html


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM