1. 程式人生 > >shell printf命令:格式化輸出語句

shell printf命令:格式化輸出語句

printf

先來看一個簡單的例子:使用命令printf “hello,world\n”,

輸出:hello,world

再使用echo “hello,world\n”,輸出為:hello,world\n

案例二:使用命令printf "%s\n" hello,world

輸出結果為:hello,world

printf命令的完整語法有兩個部分:

printg format-string [arguments]

第一部分為描述格式規格的字串,他的嘴尖提供方式是放在引號內的字串常數.

第二部分為引數列表,例如字串或變數值的列表,該列表需與格式規格相對應.

printf使用

format字串控制輸出.字串裡的純字元都會如實列印.echo的轉義序列會被解釋.包括%與一個字母的格式指示符.用來指示相對應的引數字串的格式化.

                  printf的轉義序列

序列

說明

\a

警告字元,通常為ASCIIBEL字元

\b

後退

\c

抑制(不顯示)輸出結果中任何結尾的換行字元;而且,任何留在引數裡的字元,任何接下來的引數以及任何留在格式字串中的字元,都被忽略

\f

換頁

\n

換行

\r

回車

\t

水平製表符

\v

垂直製表符

\\

一個字面上的反斜槓字元

\ddd

表示13位數八進位制的字元.盡在格式字串中有效

\0ddd

表示13位的八進位制字元

轉義序列只在格式字串中會被特別對待,也就是說,出現在引數字串裡的轉義序列不會被解釋:

使用命令:printf "%s\n" "abc\ndef"

輸出結果:abc\ndef

                  printf格式指示符

%c

ASCII字元.顯示相對應引數的第一個字元

%d,%i

十進位制整數

%e

浮點格式([-d].precisione [+-dd])

%E

浮點格式([-d].precisionE [+-dd])

%g

%e%f轉換,看哪一個較短,則刪除結尾的零

%G

%E%f轉換,看哪一個較短,則刪除結尾的零

%s

字串

%u

不帶正負號的十進位制值

%x

不帶正負號的十六進位制.使用af表示1015

%%

字面意義的%

%X

不帶正負號的十六進位制.使用AF表示1015

                      精度的含義

轉換

精度含義

%d,%i,%o,%u,%x,%X

要列印的最小位數.當值的位數少於此數字時,會在前面補零.預設精度為1

%e,%E

要列印的最小位數.當值的位數少於此數字時,會在小數點後面補零,預設為精度為6.精度為0則表示不顯示小數點小數點右邊的位數

%f

小數點右邊的位數

%g,%G

有效位數的最大數目

%s

要列印字元的最大數目

案例一:

使用命令:printf "%.5d\n" 15

輸出:00015

案例二:

使用命令:printf "%.10s\n" "a very long string"

輸出:a very lon

案例三

使用命令:printf "%.2f\n" 123.4567

輸出:123.46

                   printf的標誌

字元

意義

-

將欄位裡已格式化的值向左對齊

空格(space)

在正值前置一個空格,在負值前置一個負號

+

總是在數值之前放置一個正號或負號,即便是正值也是

#

下列形式選擇其一:%o有一個前置的o;%x%X分別前置的0x0X.%e,%E%f總是在結果中有一個小數點;%g%G為沒有結尾的零.

0

以零填補輸出,而非空白.這僅發生在欄位寬度大於轉換後的情況.C語言裡,該標誌應用到所有輸出格式,及時是非數字的值也是一樣.對於printf命令而言,它僅應用到數值格式

案例一:

使用命令:printf "%-20s%-15s%10.2f\n" "Shan" "zhang" 35       

輸出:Shan                zhang               35.00

分析:

%-20s表示一個左對齊、寬度為20個字元字串格式,不足20個字元,右側補充相應數量的空格符。

%-15s表示一個左對齊、寬度為15個字元字串格式。

%10.2f表示右對齊、10個字元長度的浮點數,其中一個是小數點,小數點後面保留兩位。

案例二:

使用命令:printf "|%10s|\n" hello

輸出:|     hello|

分析:%10s表示右對齊,寬度為10的字串,如不足是個字串,左側補充相應數量的空格數.

案例三:

使用命令:printf "|%-10s|\n" hello

輸出:|hello     |

分析:和案例二比較一下

案例四

使用命令:printf "%x %#x\n" 15 15

輸出:f 0xf

分析:如果#標誌和%x,%X搭配使用,在輸出十六進位制數字時,前面回家0x或者0X字首.

使用標誌符的作用主要是為了動態的指定寬度和精度.

綜合案例分析:

字串向左向右對齊案例:

使用命令:printf "|%-10s| |%10s|\n" hello world

輸出|hello     | |     world|

空白標誌案例:

使用命令: printf "|% d| |% d|\n" 15 -15                 

輸出:| 15| |-15|

+標誌案例:

使用命令:printf "|%+d| |%+d|\n" 15 -15  

輸出:|+15| |-15|

#標誌案例:

使用命令:printf "%x || %#X\n" 15 15

輸出:f || 0XF

0標誌案例:

使用命令:printf "%05d\n" 15

輸出:00015

對於轉換指示符%b,%c%s而言,相對應的引數都是為字串.否則,他們會被解釋為C語言的數字常數(開頭的0位八進位制,以及開頭的0x0X為十六進位制).更進一步說,如果引數的第一個字元為單引號或雙引號,則縣桂英的數值是字串的第二個字元的ASCII:

命令:printf "%s is %d \n" a "'a"

輸出:a is 97 

當引數多於格式指示符時,格式指示符會根據需要再利用.這種做法在引數列表長度未知時時很方便的,例如來自萬用字元表示式.如果留在格式字串裡剩下的指示符比引數多時,如果是數值轉換,則遺漏的值會被看做是零,如果是字串轉換,則被視為空字串(雖然可以這麼用,但比較好的方式應該是一一對應關係,即提供的引數數目和格式字串數目相同).如果printf無法進行格式的轉換,便返回一個非零的退出狀態.

相關推薦

shell printf命令格式化輸出語句

printf 先來看一個簡單的例子:使用命令printf “hello,world\n”, 輸出:hello,world 再使用echo “hello,world\n”,輸出為:hello,world\n 案例二:使用命令printf "%s\n" hello,w

golang自學之路(Printf格式化輸出語句的常用方法和控制檯輸入)2

package main import "fmt" func main() { a,b:=123,321 c,d:="dsds",5.5 fmt.Print("你好,世界!")//輸出控制檯 fmt.Println(a)//輸出控制檯後自動換行 fmt.Printf

shell test 命令、循環語句

use str 技術分享 login div 空格 image mage 權限操作 test 命令、循環語句 test命令格式: test condition 通常,在if-then-else語句中,用[]代替,即[ condition ]。註意,方括號兩邊都要有空格。 常

python開發基礎格式化輸出

req during argument names class format spa 年齡 用戶 1 #format的三種玩法 2 res1 = ‘{},{},{}‘.format(‘joker‘,‘male‘,18) 3 print(res1) #類似於占位符

C語言格式化輸出語句

分享圖片 如果 clas .com c語言格式化輸出 表達式 多個 info 之間 C語言格式化輸出語句 格式化輸出語句,也可以說是占位輸出,是將各種類型的數據按照格式化後的類型及指定的位置從計算機上顯示。這樣做的好處,是有利於計算機能夠準確的將我們所要類型數據給我們。

10-shell printf命令

不足 run 替代 () process 命令 author 實例 echo 上一章節我們學習了 Shell 的 echo 命令,本章節我們來學習 Shell 的另一個輸出命令 printf。printf 命令模仿 C 程序庫(library)裏的 printf() 程序。

LVM 管理之三格式化輸出

轉載http://francs3.blog.163.com/blog/static/4057672720122305442793/ 今天學習了下 LVM 輸出格式化的內容,顯示LVM資訊常用 pvs,lvs,vgs 命令,如果想顯示 詳細資訊可以使用 pvdisplay ,vgdisplay ,l

Python【3】格式化 輸出 while ,else ASCII碼 ,位元組轉換 ,邏輯運算

(佔位符) % (求餘數) 示例 name = input("請輸入你的名字") age =int(input("請輸入你的年齡")) height = int

Python【3】格式化 輸出 while ,else ASCII碼 ,字節轉換 ,邏輯運算

想要 inpu pytho 占位符 可能 輸入 判斷 pre 。。 (占位符) % (求余數) 示例 name = input("請輸入你的名字") age =int(input("請輸入你的年

Shell程式設計五-Shell printf 命令

Shell printf 命令 printf 命令模仿 C 程式庫(library)裡的 printf() 程式。 printf 由 POSIX 標準所定義,因此使用 printf 的指令碼比使用 echo 移植性好。 printf 使用引用文字或空格分隔的引數,外面可以在 printf 中使用

python程式設計格式化輸出

範例: #!/bin/python #by fuqiang #2018-09-22 name = input("name:") age = int( input("age:") ) job = input("job:") hometown = input("hometow

七. Shell printf 命令

上一章節我們學習了 Shell 的 echo 命令,本章節我們來學習 Shell 的另一個輸出命令 printf。 printf 命令模仿 C 程式庫(library)裡的 printf() 程式。 printf 由 POSIX 標準所定義,因此使用 printf 的

Python學習二格式化輸出

Name = input('Name: ')Age = input('Age: ')Position = input('Position: ')Income = input('Income: ')if Income.isdigit(): #判斷Income是否為str型的數字 Income = int(

Go基礎程式設計格式化輸出、型別轉換、類型別名

使用fmt包來格式化字串 fmt.Printf()格式字串: 列印格式 含義 %% 一個%字面量 %b 一個二進位制整數值(基數為2),或者是一個(高階的)用

LVM 管理格式化輸出

 今天學習了下 LVM 輸出格式化的內容,顯示LVM資訊常用 pvs,lvs,vgs 命令,如果想顯示  詳細資訊可以使用 pvdisplay ,vgdisplay ,lvdisplay,其中前面命令僅用於簡單輸出 lvm 對  象相關資訊,可以格式化輸出;第二種命令會

Linux下date命令格式化輸出,時間設定

date命令的幫助資訊  [[email protected] source]# date --help 用法:date [選項]... [+格式]  或:date [-u|--utc|--universal] [MMDDhhmm[[CC]YY][.ss]] 以給

Python 擴充套件知識格式化輸出

常見的格式符:   %s :字串 ( 採用 str() 的顯示 )  %r :字串 ( 採用 repr() 的顯示 )  %d :整數 ( 十進位制 )  %f :浮點數 示例1:

MySQL命令格式化輸出  

來自http://www.codesky.net/article/200907/168892.html MySQL的客戶端命令行工具,有很多方便使用者的特性,某些方面甚至可以說比Oracle的sqlplus更加人性化。當然從整體來說,還是sqlplus更加方便些,這麼說或許是我對sqlplus更加

8.shell printf命令

printf 命令模仿 C 程式庫(library)裡的 printf() 程式。 printf 由 POSIX 標準所定義,因此使用 printf 的指令碼比使用 echo 移植性好。 1.printf 命令的語法: printf format-string[a

shellprintf 輸出語句

int 制表符 超過 手動添加 數字 span 字符 列表 rar 總結: (1)printf 使用引用文本或空格分隔的參數,外面可以在printf中使用格式化字符串,還可以制定字符串的寬度、左右對齊方式等。默認printf不會像 echo 自動添加換行符,我們可以手動添加