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,就是按一下鍵...