作用:按照我們指定的格式輸出文字
語法格式
printf "format" , item1, item2, ...
printf的工作原理:
將printf後面的item作為引數逐個傳遞給"format"進行格式化後輸出
(1) 必須指定format,
(2) 不會自動換行,需要顯式給出換行控制符,\n
(3) format可以有多個,但是必須與後面的每個item指定格式符
#printf "%s\n%s\n%s\n%4.2f\n%4.2f\n%4.2f\n" i
love
you 11 12.2 13.35
一共6個item,所以就是必須有6個format。
如果format數量少於item數量,則format的個數控制一次傳多少個item處理。
比如:#printf "%7s %7s\n" i
love
you 11 12.2 13.35 2個fromat 6個item,一次傳2個處理
ilove
you 11
12.2 13.35
格式符:與item一一對應
%c: 顯示字元的ascii碼
%d, %i: 顯示十進位制整數
#printf "%g\n" -1 10 100.15 123.14
-1 10
100.15
123.14
%e, %e:顯示科學計數法數值
#printf "%e\n" a
-1 10 100.15 123.14
-bash: printf: a: invalid
number
0.000000e+00
-1.000000e+00
1.000000e+01
1.001500e+02
1.231400e+02
%f:顯示為浮點數
#printf "%f\n" a
-1 10 100.15 123.14
-bash: printf: a: invalid
number
0.000000
-1.000000
10.000000
100.150000
123.140000
%g, %g:以科學計數法或浮點形式顯示數值
printf "%g\n" a
-1 10 100.15 123.14
-bash: printf: a: invalid
number0-1
10100.15
123.14
%s:顯示字串
%u:無符號整數
#printf "%u\n" a
-1 10 100.15 123.14
-bash: printf: a: invalid
number
018446744073709551615
10-bash: printf: 100.15: invalid
number
0-bash: printf: 123.14: invalid
number
0%o 不帶正負號的八進位制值
%u 不帶正負號的十進位制值
%x 不帶正負號的十六進製制值,使用a至f表示10至15
%x 不帶正負號的十六進製制值,使用a至f表示10至15
%%: 顯示%自身
修飾符:
#[.#]:第乙個數字控制顯示的寬度;第二個#表示小數點後精度,%3.1f 四捨五入
#printf "%-3
.1f\n" 10 100.15 123.14
10.0
100.2
123.1
-: 左對齊(預設右對齊) %-15s
+:顯示數值的正負符號 %+d
i
love
you 11 12.2 13.33
分別用echo 和 printf 按空格分隔換行輸出來看效果
#echo
-e "i\n
love\n
you\n 11\n 12.2\n 13.33\n"
ilove
you 11
12.2
13.33
#printf "%s\n" i
love
you 11 12.2 13.33
ilove
you11
12.2
13.33
是不是再也不用頭疼\n換行的逐個設定了?
但是,再進行複雜一點的格式化輸出,echo就無法處理了
#printf "%s\n%s\n%s\n%4.2f\n%4.2f\n%4.2f\n" i
love
you 11 12.2 13.35
ilove
you11.00
12.20
13.35
來一些例項:
為傳入的引數增加一對 引數在[ ] 內
#cat mod|xargs printf "[ %s ]\n"
[ 周瑜-法師-烽火赤壁 ]
[ 不知火舞-法師-必殺·忍蜂 ]
[ 鎧-戰士-不滅魔軀 ]
#awk -f : '' /etc/passwd
awk -f: '' passwd.txt
username: rtkit | uid: 498
------------------------------------------
username: pulse | uid: 497
------------------------------------------
username: gdm | uid: 42
------------------------------------------
username: hunk | uid: 500
------------------------------------------
想怎麼樣式就輸出
修飾符對於數字的影響
#printf "%.3f\n" 123.456789 1234.56789
123.457
1234.568
當修飾符為%f時,控制小數點後的精度 .3 就是3位小數
#printf "%.6d\n" 123 1234
000123
001234
當修飾符為%d時,控制整數的位數,不足的在高位補0 .6 就是6位整數
printf函式詳解
printf 格式轉換的一般形式如下 flags width prec type 以括號括起來的引數為選擇性引數,而 與type則是必要的。底下先介紹type的幾種形式 d 整數的引數會被轉成一有符號的十進位制數字 u 整數的引數會被轉成一無符號的十進位制數字 o 整數的引數會被轉成一無符號的八進位...
Printf引數詳解
printf 函式 作用 向終端輸出若干個任意型別的資料 putchar 只能輸出字元,而且只能是乙個字元,而printf可 以輸出多個資料,且為任意型別 一 printf 的一般格式 printf 格式控制,輸出列表 例 int i 3 double f 4.56 printf i d,f f n...
printf函式詳解
printf 函式 作用 向終端輸出若干個任意型別的資料 putchar 只能輸出字元,而且只能是乙個字元,而printf可以輸出多個資料,且為任意型別 一 printf 的一般格式 printf 格式控制,輸出列表 例 int i 3 double f 4.56 printf i d,f f n ...