极客进化岛
技术自由路

【linux】循序渐进学运维-printf

文章目录
概述:
printf 命令的功能:
常用格式:
一些常用的空白符
实例:
输出两位浮点数:
%s的占位符
面试题
格式化输出文本

概述:

格式:

printf [format] [文本1] [文本2] ... [文本n]

printf 命令的功能:

格式化打印数据,默认打印字符串不换行

常用格式:

%s : 一个字符串
%d,%i : 一个小数
%f : 一个浮点数
%c ASCII字符,显示对应参数的第一个字符
%u 不带正负号的十进制值
%ns 输出字符串,n是输出几个字符
%m.nf 输出浮点数,m是输出的整数位数,n是输出的小数位数
%x 不带正负号的十六进制,使用a到f表示10到15
%X 不带正负号的十六进制,使用A到F表示10到15
%% 标书输出单个%
%-5s 左对齐,对参数每个字段左对齐,宽度为5
%-4.2f 左对齐,宽度为4 ,保留两位小数。 如: %8.2f代表共输出8位数,其中2位是小数,6为是整数
%5s 右对齐,不加横线表示右对齐

一些常用的转义字符

\a 警告字符,通常为ASCII的BEL字符
\b 后退
\f 换页
\n 换行
\r 回车
\t 水平制表符
\v 垂直制表符
\ 表示\本身

实例:

[root@zmkjedu71 ~]# cat test
 i like linux
you like python
if  i like python 
can you like linux
[root@zmkjedu71 ~]# printf '%s\t %s\t %s\t %s\t\n' $(cat test)
i    like    linux   you    
like     python  if  i  
like     python  can     you    
like     linux          
[root@zmkjedu71 ~]# 

注: printf命令中的单引号输入的任何空格都不会反映到格式输出中,只有格式输出的符号才会影响到prinf命令的输出结果

输出两位浮点数:

[root@zmkjedu71 ~]# printf "%.2f\n" 123.4567
123.46

%s的占位符

[root@zmkjedu71 ~]# printf "%s %s %s " a b c d e f g h i j
a b c d e f g h i j   
[root@zmkjedu71 ~]# 

面试题

格式化输出文本

[root@zmkjedu71 ~]# vi test.sh
a
printf "%-10s %-8s %-4s\n" 姓名 性别   身高
printf "%-10s %-8s %-4.2f\n" 杨紫   女   1.732
printf "%-10s %-8s %-4.2f\n" 杨过   男   1.772
printf "%-10s %-8s %-4.2f\n" 杨树   女   1.693
:x
[root@zmkjedu71 ~]# sh test.sh 
姓名     性别   身高
杨紫     女      1.73
杨过     男      1.77
杨树     女      1.69
[root@zmkjedu71 ~]# cat test.sh 
printf "%-10s %-8s %-4s\n" 姓名 性别   身高  
printf "%-10s %-8s %-4.2f\n" 杨紫   女   1.732
printf "%-10s %-8s %-4.2f\n" 杨过   男   1.772 
printf "%-10s %-8s %-4.2f\n" 杨树   女   1.693 

其他

10进制转16进制
printf "%X\n" 13

颜色输出与echo类似

颜色输出:与echo类似

printf "\033[背景颜色;文字颜色;显示方式m格式\033[0m" 字符串

或 printf "\e[背景颜色;文字颜色;显示方式m格式\e[0m" 字符串
赞(0)
未经允许不得转载:极客进化岛 » 【linux】循序渐进学运维-printf