如何使用printf命令处理文本?
admin
2023-02-03 16:42:15
0

使用过c语言的程序员,应该很熟悉printf命令,printf命令模仿了c语言的printf( )函数

printf命令的作用是按照我们指定的格式输出文本

看到echo 命令是正常输出一个文本进行换行,而printf是输出文本进行不换行

[root@zhaocheng ~]# echo beijing
beijing
[root@zhaocheng ~]# printf beijing
beijing[root@zhaocheng ~]# 


如果使用printf进行换行输出可以加\n

[root@zhaocheng ~]# printf "beijing\n"
beijing

而printf这么麻烦,但为什么还有人一直在用,它真正的作用是能够格式化输出文本的能力
而打印的时候,echo -e可以使用\n换行进行输出,而printf也可以加\n换行输出,或者也可以加"%s\n"进行输出


而printf的能力在处理多行进行换行的文本时明显是比较快,使用\n的时候如果处理多1000个需要换行的,显示echo -e \n 力不从心,也就是%s这个是代替传入的参数,%s代替了命令中123,456,当我们使用%s\n就会通过printf输出格式化成"abc\n" 以此类推这样都进行将后面的进行格式化输出

[root@zhaocheng ~]# echo -e "123 \n456 \n789 \naaa \nbbb \nccc" 
123 
456 
789 
aaa 
bbb 
ccc
[root@zhaocheng ~]# printf "123 \n456 \n789 \naaa \nbbb \nccc" 
123 
456 
789 
aaa 
bbb 
[root@zhaocheng ~]# printf "%s\n" 123 456 789 aaa bbb ccc
123
456
789
aaa
bbb
ccc

printf还支持多种替换符格式化类型
%s 字符串
%f 浮点格式
%b 相对应的参数中包含转义字符时,可以使用此替换符进行替换,对于的转义字符会被转义
%c ASCII字符,显示相对应参数的第一个字符
%d %i 十进制整数
%o 不带正负号的八进制值
%u 不带正负号的十进制值
%x 不带正负号的十六进制值,使用a至f表示10至15
%X 不带正负号的十六进制值,使用A至F表示10至15
%% 表示“%”本身

转义字符
printf常用的转义符
\a 警告字符,通常为ASCLL的BEL字符
\b 后退
\c 抑制(不显示) 输出结果中任何结尾的转义字符,(只在%b格式指示符控制下的参数字符串中有效,而且任何留在参数里的字符,任何接下来的参数以及任何留在格式字符串中的字符,都被忽略
\f 换页
\n 换行
\r 回车
\t 水平制表符
\v 垂直制表符
\ 一个字面上的反斜杠字符,仅在格式字符串中有效
\0ddd 表示1-3位的八进制值字符

比如为每个传入的参数添加一对括号,并且括号内测需要有空格

[root@zhaocheng ~]# printf "[%s] " 12 45 67 78 89  ; echo ""
[12] [45] [67] [78] [89] 
[root@zhaocheng ~]# printf "[ %s ] " 12 45 67 78 89  ; echo ""
[ 12 ] [ 45 ] [ 67 ] [ 78 ] [ 89 ] 

使用\t参数“制表符”进行隔开

[root@zhaocheng ~]# printf "%s\t" 12 45 67 78 89 ; echo ""
12      45      67      78      89 

使用\n是换行输出,%f\n浮点型参数输出

[root@zhaocheng ~]# printf "%s\n" 123 45 5676 76
123
45
5676
76
[root@zhaocheng ~]# printf "%f\n" 123 45 5676 76
123.000000
45.000000
5676.000000
76.000000


格式替换符的使用

[root@zhaocheng ~]# printf " %s\n" 12 45 67 78 89 99
 12
 45
 67
 78
 89
 99
[root@zhaocheng ~]# printf "%s %s\n" 12 45 67 78 89 99
12 45
67 78
89 99
[root@zhaocheng ~]# printf "%s %s %s\n" 12 45 67 78 89 99
12 45 67
78 89 99
[root@zhaocheng ~]# printf "%s %s %s %s\n" 12 45 67 78 89 99
12 45 67 78
89 99  
[root@zhaocheng ~]# printf "%s %s %s %s %s\n" 12 45 67 78 89 99
12 45 67 78 89
99    
[root@zhaocheng ~]# printf "%s %s %s %s %s %s\n" 12 45 67 78 89 99
12 45 67 78 89 99
[root@zhaocheng ~]# printf "12 45 67 78 89 99\n"
12 45 67 78 89 99


使用printf 同样也可以进行颜色输出

如何使用printf命令处理文本?

如何使用printf命令处理文本?

也可以加入特定的数字,%7s 7表示当前替换符对应的输出宽度为7个字符宽

如何使用printf命令处理文本?

相关内容

热门资讯

德国总理:美国正在被伊朗羞辱 德国之声4月27日报道,德国总理默茨在访问一所学校时表示,在当前的持续冲突中,伊朗领导层正试图羞辱美...
理响中国|“长”歌以行,风云激... 光阴如梭,东方潮阔。这里是中国的长三角,世界的长三角。无论过去、现在还是未来,这片土地都因时代而生,...
白宫:特朗普及其国安团队开会讨... 新华社华盛顿4月27日电 美国白宫新闻秘书莱维特27日在记者会上证实,总统特朗普及其国家安全团队当天...
人民日报刊文:日本放开杀伤性武... 日本放开杀伤性武器出口推高地缘冲突风险(国际论坛)常思纯《人民日报》(2026年04月28日 第 0...
医疗保障法草案二审:明确生育保... 满足多样化健康保障需求本报记者 彭 波4月27日,医疗保障法草案二审稿提请十四届全国人大常委会第二十...
天津一景区发生自转旋翼机事故1... 澎湃新闻记者 吕新文中国民用航空华北地区管理局4月22日公布《豪客通航“10•1”天津长芦汉盐旅游区...
卡塔尔埃米尔与美国总统特朗普通... 当地时间24日,卡塔尔埃米尔塔米姆与美国总统特朗普通电话,重点就中东地区局势以及伊朗与美国谈判问题交...
男子30年前被扣押2859克黄... 澎湃新闻记者 王鑫家住辽宁省大连市的潘永嘉近日向澎湃新闻反映称,三十年前,他在大连周水子机场被盖州市...
商务部:取消反制欧盟两家金融机... 中华人民共和国商务部令二〇二六年 第1号鉴于欧盟已取消对中国两家金融机构的制裁措施,现公布《关于取消...
过去24小时共有5艘船只通过霍... 总台记者当地时间24日获悉,过去24小时内,共有5艘船只通过霍尔木兹海峡,其中包括一艘伊朗油轮。(总...