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. 前段学习的roadmap

    引自http://www.cnblogs.com/IMxinu/p/9693041.html

  2. Curve 曲线 工具

    最近研究了曲线绘制的工具,主要是2D方程的绘制.综合了许多工具,完成了一下两个脚本. 绘制的工具: using UnityEngine; using System.Collections; using ...

  3. 使用Pillow库 创建简单验证码

    使用Pillow生成简单的验证码 本想做成字体各自按随机角度倾斜, 但没有在Pillow中找到相关的方法 import randomfrom PIL import Image, ImageDraw, ...

  4. anaconda3下64位python和32位python共存

    查看当前工作平台:conda info 切换64位和32位: set CONDA_FORCE_32BIT=1是切换到32位 set CONDA_FORCE_32BIT= 是切换到64位 注意=号前后不 ...

  5. Linux常用命令练习

    实验结论 熟悉命令倒不是什么难的过程,很容易就能跟着指示打出来并明白其效果与作用.难就难在了感受不到这些命令的实际意义,即如何有效的结合起来并在项目中运用,这就导致了很大的迷茫与无力感. cat fi ...

  6. phoneshop cs6破解

    一.以“试用”方式安装photoshop: 二.下载amtlib.dll破解文件,密码:ubx2: 三.备份photoshop目录下的amtlib.dll文件,将下载的amtlib.dll文件拷贝到p ...

  7. C#创建、读写、增加、删除XML操作

    using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threa ...

  8. call,apply,bind 方法的学习

    这是三个常用的操作函数的方法,在js中函数就是一等公民,所以说掌握这三个方法还是有必要的 call 和 apply,都会绑定函数的上下文(context)并立即执行调用该方法函数,两者区别在于,接受的 ...

  9. leetcode 222.Count Complete Tree Nodes

    完全二叉树是从左边开始一点点填充节点的,因此需要计算所有的节点的个数. 则分别从左边和右边来进行传递的,当左右是完全二叉树的时候,其节点个数就是pow(2,h)-1. /** * Definition ...

  10. JVM 性能调优 -Xmx、-Xms、-Xss

    1. -Xmx  设置应用程序(不是JVM)内存可用大小 ( 如果程序要花很大内存的话,可以修改缺省配置,但是不能超过机器的内存),即最大可用Heap的大小. 2. -Xms  设置初始Heap的大小 ...