Linux命令之格式化输出printf

Posted 二木成林

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux命令之格式化输出printf相关的知识,希望对你有一定的参考价值。

概述

printf 命令是一个比 echo 更丰富的格式化输出命令,仿照了 C 语言的 printf() 函数的功能。

参考资料:



语法

该命令的语法如下:

printf FORMAT [ARGUMENT]...
printf OPTION

该命令支持的选项有:

选项说明
–help查看帮助信息
–version查看版本信息

如果要进行换行或者用制表符分隔字符串,需要在 FORMAT 中使用转义字符。支持的转义有:

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

除了上面的转义符之外,还必须要有格式占位符,比如用 "%s" 表示一个字符串。支持的格式占位符有:

格式占位符说明
%d将参数打印为十进制整数
%f将参数打印为浮点数
%s将参数打印为字符串
%x将参数打印为十六进制整数
%o将参数打印为八进制整数

事实上,上面的格式占位符是由百分号 % 和转换字符(如 ds 等)组成的。上面只是常用的形式,而真正的格式应该是以 % 开头,以转换字符结尾。在 % 和转换字符之间可能有,按顺序:

符号说明
-表示左对齐,如果没有则表示默认右对齐
number指定字符宽度的整数,如果不足该指定宽度则以空格进行填充
.一个句点,将字段宽度与精度分开
number一个整数,精度,它指定要从字符串中打印的最大字符数,或浮点值的小数点后的位数,或整数的最小位数
hl分别区分短整数和长整数,并且通常仅用于计算机编程

%-10s 表示一个宽度为 10 个字符的字符串(- 表示左对齐,没有则表示右对齐),如果不足则自动以空格表示,如果超过则会将内容全部显示出来。

%4.2f 表示格式化为小数,其中 .2 表示保留两位小数。

pintf 命令默认是不换行的,如果需要换行则需要使用转义字符 \\necho 命令默认就换行。



使用

格式化输出

示例:

printf "name:%s\\tgender:%s\\tage:%d\\tscore:%.2f\\n" 张三 f 18 66.5

如果在脚本中使用,可以传递变量。例如:

#!/bin/bash

msg="hello world"
printf "%s\\n" "$msg"

以上是关于Linux命令之格式化输出printf的主要内容,如果未能解决你的问题,请参考以下文章

python,awk,shell格式化输出内容全解

Shell脚本

Linux常用基本命令:三剑客命令之-awk格式化动作

格式化输出命令printf

linux之Shell编程--Shell输出命令echo和printf

Linux Gvim shell printf命令