打印輸出時,可能須要指定字段間的空格數,從而把列排整齊。在print函數中使用製表符並不能保證獲得想要的輸出,所以,能夠用printf函數來格式化特別的輸出。html
printf函數返回一個帶格式的字符串給標準輸出,如同C語言中的printf語句同樣。printf語句包括一個加引號的控制串,控制串中可能嵌有若干格式說明和修飾符。控制串後面跟一個逗號,以後是一列由逗號分隔的表達式。printf函數根據控制串中的說明編排這些表達式的格式。與print函數不一樣的是, printf不會在行尾自動換行。所以,若是要換行,就必須在控制串中提供轉義字符\n。linux
每個百分號和格式說明都必須有一個對應的變量。要打印百分號就必須在控制串中給出兩個百分號。請參考print轉義字符和printf修飾符。格式說明由百分號引出,另外還列出了printf所用的格式說明符。shell
printf使用的轉義字符函數
轉義字符 | 定義 |
---|---|
c | 字符 |
s | 字符串 |
d | 十進制整數 |
ld | 十進制長整數 |
u | 十進制無符號整數 |
lu | 十進制無符號長整數 |
x | 十六進制整數 |
lx | 十六進制長整數 |
o | 八進制整數 |
lo | 八進制長整數 |
e | 用科學記數法(e 記數法)表示的浮點數 |
f | 浮點數 |
g | 選用e或f中較短的一種形式 |
printf的修飾符spa
字符 | 定義 |
---|---|
- | 左對齊修飾符 |
# | 顯示8 進制整數時在前面加個0 顯示16 進制整數時在前面加0x |
+ | 顯示使用d 、e 、f 和g 轉換的整數時,加上正負號+或- |
0 | 用0而不是空白符來填充所顯示的值 |
printf的格式說明符code
格式說明符 | 功能 |
---|---|
%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控制串裏的管道符(豎槓)是文本的一部分, 用於指示格式的起始與結束。
範例htm
說明:對於echo命令的輸出,Linux是經管道發給awk。printf函數包含一個控制串。百分號讓printf作好準備,它要打印一個佔15個格、向左對齊的字符串,這個字符串夾在兩個豎槓之間,而且以換行符結尾。百分號後的短劃線表示左對齊。控制串後面跟了一個逗號和$1。printf將根據控制串中的格式說明來格式化字符串Linux。字符串
範例get
說明:字符串Linux被打印成一個佔15 格、向右對齊的字符串,夾在兩個豎槓之間,以
換行符結尾。it
範例
說明:要打印的字符串放置在兩個雙引號之間。第一個格式說明符是%-15s,它對應的參數是$1,緊挨着控制串的右半邊引號後面的那個逗號。百分號引出格式說明:短劃線表示左對齊,15s表示佔15格的字符串。這條命令用來打印一個左對齊、佔15格的字符串,後面跟着字符串的ID和一個整數。
格式:%8d表示在字符串的這個位置打印$2 的十進制(整數)值。這個整數佔8格,向右對齊。您也能夠選擇將加引號的字符串和表達式放在圓括號裏。
轉http://www.linuxawk.com/jiaocheng/83.html