Linux printf命令
printf命令模仿了C语言中的printf()函数。主要作用是输出文本,按照我们指定的格式输出文本。还有一个输出文本的命令echo,在输出文本时,echo会换行。printf命令不会对输出文本进行换行。可以使用 。但是printf命令的优势是格式化文本。示例如下:
[root@dm ~]# echo 'string' string [root@dm ~]# printf 'string' string[root@dm ~]# [root@dm ~]# printf 'string ' string
语法:
printf format-string [arguments...]
需求把aa bb cc dd ee按照空格分段,每段单独一行。有以下几种方法:
[root@dm ~]# echo -e "aa bb cc dd ee" aa bb cc dd ee [root@dm ~]# printf "aa bb cc dd ee " aa bb cc dd ee [root@dm ~]# printf "%s " aa bb cc dd ee aa bb cc dd ee
在字段非常多的时候,明显前两种方法不合适。在第三种方法中,"%s "是指定的格式。后面的每一个字符串,都被当做参数传入到printf命令中,并按照指定的格式进行了格式化。%s是格式替代符,代表了每一个传入的参数。并将它们转化为字符串类型。%f也代表每一个传入的参数,将他们转化为浮点型。
[root@dm ~]# printf "%s " 1 5 12 1 5 12 [root@dm ~]# printf "%f " 1 5 12 1.000000 5.000000 12.000000
常用的格式替代符还有以下几种
格式替代符:
%s 字符串
%f 浮点型
%b 相对应参数中包含转义字符时,可以使用此替换符进行替换,对应的转义字符被转义。
%c ASCII字符,显示想对应参数的第一个字符。
%d, %i 十进制整数
%o 不带正负号的八进制值
%u 不带正负号的十进制值
%x 不带正负号的十六进制值,使用a至f表示10到15
%X 不带正负号的十六进制值,使用A至F表示10到15
%% 表示 % 本身
转义字符:
a 警告字符,通常为ASCII的BEL字符
后退
c 抑制(不显示)输出结果中任何结尾的换行字符(只在%b格式指示符控制下的参数字符串中有效),而且,任何留在参数里的字符、任何接下来的参数以及任何留在格式字符串中的字符,都被忽略
f 换页
换行
回车
水平制表符
v 垂直制表符
\ 一个字面上的反斜杠字符,即 本身
ddd 表示1到3位数八进制值的字符。仅在格式字符串中有效