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 只能文件属主或特权用户才能使用该功能来改变文件 ...
随机推荐
- c# word interop encrypt with password protect with password
public static void EncryptWithPassword(string unEncryptedWordPath, string password) { Word.Applicati ...
- idea 控制到不能输出中文
解决办法:配置Tomcat的时候在VM options添加 -Dfile.encoding=UTF-8
- Spring学习札记(一)
写在前面:spring的两大特点:IOC与aop.IOC(Inverse of Control):控制反转,也可以称为依赖倒置.降低耦合.AOP:即面向切面编程. 从Spring的角度看,AOP最大的 ...
- Java学习NO.4
学习内容如下: 数组的概述与特征 概述: 它是具有相同数据类型的一组数据的集合 存储在数组中的数据我们称之为数组元素,可通过“数组名[下标]”的方式进行访问,下标也就是索引,从0开始,且负数索引是无效 ...
- javascript 禁用 右键 按键 禁用开发者工具
var h = window.innerHeight,w=window.innerWidth; //禁用右键 (防止右键查看源代码) window.oncontextmenu=function(){ ...
- shell编程规范
1 脚本名以.sh结尾,名称尽量见名之意,比如ClearLog.sh Clear_Log.sh clearlog.sh SerRestart.sh Ser_Restart.sh;2 尽量使用UTF-8 ...
- 2019-04-22-day037-数据库的安装
内容回顾 进程 线程 协程之间的相同点和不同点 进程 : 内存隔离 操作系统级别 开销大 可以利用多核 计算机中资源分配的最小单位 线程 : 内存共享 操作系统级别 开销中 Cpython解释器下不能 ...
- 2018-08 【bug汇总】
1. 问题描述:更细参数时更新失败. 报错信息:无报错信息,返回为成功. 问题分析:代码查看逻辑无问题.说明可能不是逻辑的问题,dubug查看发现,参数并没有传入进来,查看传递参数的requestBe ...
- Windows Essentials Movie Maker 安装失败报错 ——问题解决
Windows Essentials Movie Maker 安装失败报错: (软件包名: wlsetup-all.exe) 查到官方论坛给出了一些回复: https://social.technet ...
- 数据结构_1+AI_1
归纳一下今天看的有关数据结构和AI的知识: 数据结构:数据的组织形式和存储方法 主要包括:1.线性结构 2.树结构 3.图结构 1.线性结构:由n个元素构成的有限序列.[数组]为最简单的一种形式. 主 ...