高階shell擴充套件 printf命令

2021-10-07 20:58:53 字數 3264 閱讀 3208

printf命令模仿c程式庫(library)裡的 printf() 程式。

printf 由 posix 標準所定義,因此使用 printf 的指令碼比使用 echo 移植性好。

printf 使用引用文字或空格分隔的引數,外面可以在 printf 中使用格式化字串,還可以制定字串的寬度、左右對齊方式等。

預設 printf 不會像 echo 自動新增換行符,我們可以手動新增 \n。

語法:

printf  format-string  [arguments...]
引數說明:

format-string: 格式控制字串

arguments: 引數列表

格式控制的完整格式:

%   -   0   m.n   l或h   格式字元
%:表示格式說明的起始符號,不可缺少

-:有-表示左對齊輸出,如省略表示右對齊輸出

m:指對應的輸出項在輸出裝置上所佔的字元數

+當m大於字串的字元數時,其它位用空格代替

+當m小於等於字串的字元數時,輸出所有字串(等於不指定或m=0時的效果)

m.n:

+m指對應的輸出項在輸出裝置上所佔的字元數

+n指精度,用於說明輸出的實型數的小數字數,當n大於等於字串的字元數時,預設輸錯所有字串

l或h:l對整型指long型,對實型指double型。h用於將整型的格式字元修正為short型。

例項一:

[root@localhost aaa]

# a=abcdefg

[root@localhost aaa]

# printf "%s1\n" $a

abcdefg1

[root@localhost aaa]

# printf "%0s1\n" $a

abcdefg1

[root@localhost aaa]

# printf "%3s1\n" $a

abcdefg1

[root@localhost aaa]

# printf "%8s1\n" $a

abcdefg1

[root@localhost aaa]

# printf "%-8s1\n" $a

abcdefg 1

[root@localhost aaa]

# printf "%-8.10s1\n" $a

abcdefg 1

[root@localhost aaa]

# printf "%-8.7s1\n" $a

abcdefg 1

[root@localhost aaa]

# printf "%-8.3s1\n" $a

abc 1

[root@localhost aaa]

# printf "%8.3s1\n" $a

abc1

格式替換符

%s   字串

%f 浮點格式

%c ascii字元,即顯示對應引數的第乙個字元

%d,%i 十進位制整數

%o 八進位制值

%u 不帶正負號的十進位制值

%x 十六進製制值(a-f)

%x 十六進製制值(a-f)

%% 表示%本身

轉義字元

\a	警告字元,通常為ascii的bel字元

\b 後退

\c 抑制(不顯示)輸出結果中任何結尾的換行字元(只在%b格式指示符控制下的引數字串中有效),而且,任何留在引數裡的字元、任何接下來的引數以及任何留在格式字串中的字元,都被忽略

\f 換頁(formfeed)

\n 換行

\r 回車(carriage return)

\t 水平製表符

\v 垂直製表符

\\ 乙個字面上的反斜槓字元

\ddd 表示1到3位數八進位制值的字元。僅在格式字串中有效

\0ddd 表示1到3位的八進位制值字元

例項二:

[root@localhost aaa]

# echo "hello, shell"

hello, shell

[root@localhost aaa]

# printf "hello, shell\n"

hello, shell

[root@localhost aaa]

# printf "%o\n" 10

12[root@localhost aaa]

# printf "%x\n" 10

a[root@localhost aaa]

# printf "%x\n" 10

a[root@localhost aaa]

# printf "%s\n" 1 2 3 412

34[root@localhost aaa]

# printf "%f\n" 1 2 3 4

1.000000

2.000000

3.000000

4.000000

[root@localhost aaa]

# printf "%.2f\n" 1 2 3 4

1.00

2.00

3.00

4.00

[root@zhhs aaa]

# printf "(%s)\n" 1 2 3 4;

(1)(2)

(3)(4)

[root@localhost aaa]

# printf "%s %s\n" 1 2 3 4;

1 23 4

[root@localhost aaa]

# printf "%s %s %s \n" 1 2 3 4;

1 2 3

4[root@localhost aaa]

# printf "%-10s %-5s %s\n" a b c

a b c

[root@localhost aaa]

# printf "%-10s %-10s %-4s %s \n" 姓名 性別 年齡 體重 張三 男 18 60 李四 男 19 80

姓名 性別 年齡 體重

張三 男 18 60

李四 男 19 80

高階shell擴充套件 cut命令

cut命令用於顯示每行從開頭算起 num1 到 num2 的文字。b 以位元組為單位進行分割。這些位元組位置將忽略多位元組字元邊界,除非也指定了 n 標誌。c 以字元為單位進行分割。d 自定義分隔符,預設為製表符。f 與 d一起使用,指定顯示哪個區域。n 取消分割多位元組字元。僅和 b 標誌一起使用...

高階shell擴充套件 sort命令

sort可針對文字檔案的內容,以行為單位來排序。sort bcdfimmnr o 輸出檔案 t 分隔字元 起始字段 結束字段 help verison 檔案 k 列數 按指定列排序。b 忽略每行前面開始出的空格字元。c 檢查檔案是否已經按照順序排序。d 排序時,處理英文本母 數字及空格字元外,忽略其...

printf 高階用法

printf 顯示彩色字元已經不新鮮了,今天發現居然可以控制游標!轉乙個 linux 隱藏顯示終端游標 一 使用shell 的 echo 命令實現。echo ne 25l 60 60 60 隱藏游標 echo ne 25h 60 顯示游標 l,h為字母,是按下ctrl鍵不放,然後按下v,就是按一下鍵...