Linux printf命令详解
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命令详解的更多相关文章
- Linux Shell系列教程之(八)Shell printf命令详解
本文是Linux Shell系列教程的第(八)篇,更多shell教程请看:Linux Shell系列教程 在上一篇:Linux Shell系列教程之(七)Shell输出这篇文章中,已经对Shell p ...
- linux awk命令详解
linux awk命令详解 简介 awk是一个强大的文本分析工具,相对于grep的查找,sed的编辑,awk在其对数据分析并生成报告时,显得尤为强大.简单来说awk就是把文件逐行的读入,以空格为默认分 ...
- printf命令详解
基础命令学习目录首页 本文是Linux Shell系列教程的第(八)篇,更多shell教程请看:Linux Shell系列教程 在上一篇:Linux Shell系列教程之(七)Shell输出这篇文章中 ...
- linux awk命令详解,使用system来内嵌系统命令, awk合并两列
linux awk命令详解 简介 awk是一个强大的文本分析工具,相对于grep的查找,sed的编辑,awk在其对数据分析并生成报告时,显得尤为强大.简单来说awk就是把文件逐行的读入,以空格为默认分 ...
- linux cat 命令详解
linux cat 命令详解 http://linux.chinaunix.net/techdoc/system/2007/11/16/972467.shtml adb shell su //这个不一 ...
- 【初级】linux rm 命令详解及使用方法实战
rm:删除命令 前言: windows中的删除命令大家都不陌生,linux中的删除命令和windows中有一个共同特点,那就是危险,前两篇linux mkdir 命令详解及使用方法实战[初级]中我们就 ...
- Linux netstat命令详解
Linux netstat命令详解 一 简介 Netstat 命令用于显示各种网络相关信息,如网络连接,路由表,接口状态 (Interface Statistics),masquerade 连接,多 ...
- linux grep命令详解
linux grep命令详解 简介 grep (global search regular expression(RE) and print out the line,全面搜索正则表达式并把行打印出来 ...
- Linux chmod命令详解
Linux chmod命令详解 chmod----改变一个或多个文件的存取模式(mode) chmod [options] mode files 只能文件属主或特权用户才能使用该功能来改变文件 ...
随机推荐
- 前段学习的roadmap
引自http://www.cnblogs.com/IMxinu/p/9693041.html
- Curve 曲线 工具
最近研究了曲线绘制的工具,主要是2D方程的绘制.综合了许多工具,完成了一下两个脚本. 绘制的工具: using UnityEngine; using System.Collections; using ...
- 使用Pillow库 创建简单验证码
使用Pillow生成简单的验证码 本想做成字体各自按随机角度倾斜, 但没有在Pillow中找到相关的方法 import randomfrom PIL import Image, ImageDraw, ...
- anaconda3下64位python和32位python共存
查看当前工作平台:conda info 切换64位和32位: set CONDA_FORCE_32BIT=1是切换到32位 set CONDA_FORCE_32BIT= 是切换到64位 注意=号前后不 ...
- Linux常用命令练习
实验结论 熟悉命令倒不是什么难的过程,很容易就能跟着指示打出来并明白其效果与作用.难就难在了感受不到这些命令的实际意义,即如何有效的结合起来并在项目中运用,这就导致了很大的迷茫与无力感. cat fi ...
- phoneshop cs6破解
一.以“试用”方式安装photoshop: 二.下载amtlib.dll破解文件,密码:ubx2: 三.备份photoshop目录下的amtlib.dll文件,将下载的amtlib.dll文件拷贝到p ...
- C#创建、读写、增加、删除XML操作
using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threa ...
- call,apply,bind 方法的学习
这是三个常用的操作函数的方法,在js中函数就是一等公民,所以说掌握这三个方法还是有必要的 call 和 apply,都会绑定函数的上下文(context)并立即执行调用该方法函数,两者区别在于,接受的 ...
- leetcode 222.Count Complete Tree Nodes
完全二叉树是从左边开始一点点填充节点的,因此需要计算所有的节点的个数. 则分别从左边和右边来进行传递的,当左右是完全二叉树的时候,其节点个数就是pow(2,h)-1. /** * Definition ...
- JVM 性能调优 -Xmx、-Xms、-Xss
1. -Xmx 设置应用程序(不是JVM)内存可用大小 ( 如果程序要花很大内存的话,可以修改缺省配置,但是不能超过机器的内存),即最大可用Heap的大小. 2. -Xms 设置初始Heap的大小 ...