printf 命令詳解

2021-09-21 03:03:23 字數 3385 閱讀 6905

作用:按照我們指定的格式輸出文字

語法格式

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 ...