Linux printf命令

printf命令模仿了C语言中的printf()函数。主要作用是输出文本,按照我们指定的格式输出文本。还有一个输出文本的命令echo,在输出文本时,echo会换行。printf命令不会对输出文本进行换行。可以使用 \n 。但是printf命令的优势是格式化文本。示例如下:

[root@dm ~]# echo 'string'
string
[root@dm ~]# printf 'string'
string[root@dm ~]#
[root@dm ~]# printf 'string\n'
string

语法:

printf  format-string  [arguments...]

需求把aa bb cc dd ee按照空格分段,每段单独一行。有以下几种方法:

[root@dm ~]# echo -e "aa \nbb \ncc \ndd \nee"
aa
bb
cc
dd
ee
[root@dm ~]# printf "aa \nbb \ncc \ndd \nee \n"
aa
bb
cc
dd
ee
[root@dm ~]# printf "%s\n" aa bb cc dd ee
aa
bb
cc
dd
ee

在字段非常多的时候,明显前两种方法不合适。在第三种方法中,"%s\n"是指定的格式。后面的每一个字符串,都被当做参数传入到printf命令中,并按照指定的格式进行了格式化。%s是格式替代符,代表了每一个传入的参数。并将它们转化为字符串类型。%f也代表每一个传入的参数,将他们转化为浮点型。

[root@dm ~]# printf "%s\n"   

[root@dm ~]# printf "%f\n"
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字符

\b 后退

\c 抑制(不显示)输出结果中任何结尾的换行字符(只在%b格式指示符控制下的参数字符串中有效),而且,任何留在参数里的字符、任何接下来的参数以及任何留在格式字符串中的字符,都被忽略

\f 换页

\n 换行

\r 回车

\t 水平制表符

\v 垂直制表符

\\ 一个字面上的反斜杠字符,即 \ 本身

\ddd 表示1到3位数八进制值的字符。仅在格式字符串中有效

\0ddd 表示1到3位的八进制值字符

示例:

1、将每一个传入的参数两边添加括号,并且括号内测需要有空格

[root@dm ~]# printf "( %s )"   ;echo ""
( )( )( )

2、将每个传入的参数用制表符隔开

[root@dm ~]# printf "%s\t"   ;echo ""
        

如果我们在格式中使用多个格式替代符。那么指定格式中包含格式替代符的数量,就是每次格式参数的数量。

[root@dm ~]# printf "%s\n" a b c d e f
a
b
c
d
e
f
[root@dm ~]# printf "%s %s\n" a b c d e f
a b
c d
e f
[root@dm ~]# printf "%s%s\n" a b c d e f
ab
cd
ef

如上所示,每次格式化时传入两个参数。前一个参数对应第一个替代符,后一个参数对应第二个替代符。

用法二:在原来的格式替代符中加入数字,如%7s表示当前替换符对应的输出宽度为7个字符。如果对应的输出不满七个字符,则用空格补全,如果输出长度超过七个字符,超出部分也会显示。这些数字被称作修饰符,修饰符对相应的替换符进行修饰。

[root@dm ~]# printf "%s %s %s\n" 姓名 性别 年龄 小明 男  小红 女
姓名 性别 年龄
小明 男
小红 女
[root@dm ~]# printf "%7s %5s %4s\n" 姓名 性别 年龄 小明 男 小红 女
姓名 性别 年龄
小明 男
小红 女
[root@dm ~]# printf "%-7s %-5s %-4s\n" 姓名 性别 年龄 小明 男 小红 女
姓名 性别 年龄
小明 男
小红 女

其中 - 也是修饰符表示左对齐,默认不加 - 表示右对齐。还有一个修饰符 + 但是+不表示右对齐。在使用修饰符时,显示正数前面的正号。示例如下:

[root@dm ~]# printf "灵宠名称 体温\n";printf "%10s %5d\n" 烈火兽  冰晶兽 -
灵宠名称 体温
烈火兽
冰晶兽 -
[root@dm ~]# printf "灵宠名称 体温\n";printf "%10s %+5d\n" 烈火兽 冰晶兽 -
灵宠名称 体温
烈火兽 +
冰晶兽 -

数字修饰符还有一种特殊用法

[root@dm ~]# printf "灵宠名称 体温\n";printf "%10s %+12f\n" 烈火兽 180.23443 冰晶兽 -70.3425
灵宠名称 体温
烈火兽 +180.234430
冰晶兽 -70.342500
[root@dm ~]# printf "灵宠名称 体温\n";printf "%10s %+12.3f\n" 烈火兽 180.23443 冰晶兽 -70.3425
灵宠名称 体温
烈火兽 +180.234
冰晶兽 -70.342

当替换符为%f时,如果数字修饰符带有小数点。则小数点后边的数字表示对应的小数精度。当替换符为%d时,则数字修饰符小数点后的数字表示整数的长度,长度不够时高为用0补全

[root@dm ~]# printf "灵宠名称 体温\n";printf "%10s %+12.5d\n" 烈火兽  冰晶兽 -
灵宠名称 体温
烈火兽 +
冰晶兽 -

注意:如果没有 arguments,那么 %s 用NULL代替,%d 用 0 代替

[root@dm ~]# printf "%s and %d \n"
and

Linux printf命令详解的更多相关文章

  1. Linux Shell系列教程之(八)Shell printf命令详解

    本文是Linux Shell系列教程的第(八)篇,更多shell教程请看:Linux Shell系列教程 在上一篇:Linux Shell系列教程之(七)Shell输出这篇文章中,已经对Shell p ...

  2. linux awk命令详解

    linux awk命令详解 简介 awk是一个强大的文本分析工具,相对于grep的查找,sed的编辑,awk在其对数据分析并生成报告时,显得尤为强大.简单来说awk就是把文件逐行的读入,以空格为默认分 ...

  3. printf命令详解

    基础命令学习目录首页 本文是Linux Shell系列教程的第(八)篇,更多shell教程请看:Linux Shell系列教程 在上一篇:Linux Shell系列教程之(七)Shell输出这篇文章中 ...

  4. linux awk命令详解,使用system来内嵌系统命令, awk合并两列

    linux awk命令详解 简介 awk是一个强大的文本分析工具,相对于grep的查找,sed的编辑,awk在其对数据分析并生成报告时,显得尤为强大.简单来说awk就是把文件逐行的读入,以空格为默认分 ...

  5. linux cat 命令详解

    linux cat 命令详解 http://linux.chinaunix.net/techdoc/system/2007/11/16/972467.shtml adb shell su //这个不一 ...

  6. 【初级】linux rm 命令详解及使用方法实战

    rm:删除命令 前言: windows中的删除命令大家都不陌生,linux中的删除命令和windows中有一个共同特点,那就是危险,前两篇linux mkdir 命令详解及使用方法实战[初级]中我们就 ...

  7. Linux netstat命令详解

    Linux netstat命令详解 一  简介 Netstat 命令用于显示各种网络相关信息,如网络连接,路由表,接口状态 (Interface Statistics),masquerade 连接,多 ...

  8. linux grep命令详解

    linux grep命令详解 简介 grep (global search regular expression(RE) and print out the line,全面搜索正则表达式并把行打印出来 ...

  9. Linux chmod命令详解

    Linux chmod命令详解 chmod----改变一个或多个文件的存取模式(mode)   chmod [options] mode files   只能文件属主或特权用户才能使用该功能来改变文件 ...

随机推荐

  1. day 29 元类

    ---恢复内容开始--- 一.元类的介绍 元类:在python里,一切皆对象.所有自定义的类本身也是元类的对象,即所有自定义的类本质上也是由元类实例化出来的. class关键字创建自定义类的底层的工作 ...

  2. IP通信基础课堂笔记----关于数链层

    课前回顾 IOS从上到下分别有:应用层,传输层,网络层,数链层,物理层. IP是网络层的地址,MAC是数链层的地址,IP必须通过ARP才能转换成MAC地址. 课堂内容 1.如何在数链层实现发送端数据无 ...

  3. 写入一个html文件时的编码要求

    with open("ip.html",'w',encoding='utf-8') as fp: fp.write(response)

  4. nginx 配置 HTTPS 及http 强制跳转https.

    #user nobody; worker_processes 1; #error_log logs/error.log; #error_log logs/error.log notice; #erro ...

  5. 关于shell命令的一些用法和技巧

    #!/bin/bash #第一种写法 #date=`date "+%Y-%m-%d %H:%M:%S"` #第二种写法 date=$(date "+%Y-%m-%d %H ...

  6. Windows驱动——读书笔记《Windows驱动开发技术详解》

    =================================版权声明================================= 版权声明:原创文章 谢绝转载  请通过右侧公告中的“联系邮 ...

  7. Microsoft宣布为Power BI提供AI模型构建器,关键驱动程序分析和Azure机器学习集成

    微软的Power BI现在是一种正在大量结合人工智能(AI)的商业分析服务,它使用户无需编码经验或深厚的技术专长就能够创建报告,仪表板等.近日西雅图公司宣布推出几款新的AI功能,包括图像识别和文本分析 ...

  8. install scrapy

    首先Python.lxml.OpenSSL这些工具Ubuntu是自带的,不用管它们. 其次安装pip,在命令行中执行以下命令: sudo apt-get install python-pip 1 1 ...

  9. Netty 服务端:新连接接入

    本文主要分析服务端新连接的接入过程,主要分为以下 3 各步骤: select 操作: processSelectedKeys 操作. 1. select 操作 在分析 select 操作前,先要回顾一 ...

  10. textview自定义跳转链接

    设置方式 ,主要是遍历html中的url,然后加一个自定义的跳转 private void setTextLink(String rule) { if(TextUtils.isEmpty(rule)) ...