首页 > 系统相关 >Shell printf 命令

Shell printf 命令

时间:2023-04-02 21:47:03浏览次数:36  
标签:%- 字符 Shell string 命令 abc printf

Shell printf 命令

printf 命令模仿 C 程序库(library)里的 printf() 程序。

printf 由 POSIX 标准所定义,因此使用 printf 的脚本比使用 echo 移植性好。

printf 使用引用文本或空格分隔的参数,

外面可以在 printf 中使用格式化字符串,

还可以制定字符串的宽度、左右对齐方式等。

默认的 printf 不会像 echo 自动添加换行符,我们可以手动添加 \n

printf 命令的语法:

printf  format-string  [arguments...]

参数说明:

  • format-string: 为格式控制字符串
  • arguments: 为参数列表。
root@jdit:/home/wht# echo "Hello, Shell"
Hello, Shell
root@jdit:/home/wht# printf "Hello, Shell\n"
Hello, Shell

接下来,我来用一个脚本来体现 printf 的强大功能:

root@jdit:/home/wht# printf "%-10s %-8s %-4s\n" 姓名 性别 体重kg
printf "%-10s %-8s %-4.2f\n" 郭靖 男 66.1234
printf "%-10s %-8s %-4.2f\n" 杨过 男 48.6543
printf "%-10s %-8s %-4.2f\n" 郭芙 女 47.9876
root@jdit:/home/wht#

执行脚本,输出结果如下所示:

姓名     性别   体重kg
郭靖     男      66.12
杨过     男      48.65
郭芙     女      47.99

%s %c %d %f 都是格式替代符,

  • %s 输出一个字符串,

  • %d 整型输出,

  • %c 输出一个字符,

  • %f 输出实数,以小数形式输出。

  • %-10s 指一个宽度为 10 个字符(- 表示左对齐,没有则表示右对齐),

    任何字符都会被显示在 10 个字符宽的字符内,如果不足则自动以空格填充,超过也会将内容全部显示出来。

  • %-4.2f 指格式化为小数,其中 .2 指保留2位小数。

#!/bin/bash
# format-string为双引号
printf "%d %s\n" 1 "abc"

# 单引号与双引号效果一样
printf '%d %s\n' 1 "abc"

# 没有引号也可以输出
printf %s abcdef

# 格式只指定了一个参数,但多出的参数仍然会按照该格式输出,format-string 被重用
printf %s abc def

printf "%s\n" abc def

printf "%s %s %s\n" a b c d e f g h i j

# 如果没有 arguments,那么 %s 用NULL代替,%d 用 0 代替
printf "%s and %d \n"

执行脚本,输出结果如下所示:

1 abc
1 abc
abcdefabcdefabc
def
a b c
d e f
g h i
j  
 and 0

printf 的转义序列

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

$ printf "a string, no processing:<%b>\n" "A\nB"
a string, no processing:<A
B>

$ printf "www.baidu.com \a"
www.baidu.com $                  #不换行

标签:%-,字符,Shell,string,命令,abc,printf
From: https://www.cnblogs.com/hcgk/p/17281457.html

相关文章

  • Shell test 命令
    Shelltest命令Shell中的test命令用于检查某个条件是否成立,它可以进行数值、字符和文件三个方面的测试。有点像mybatis中的iftest数值测试参数说明-eq等于则为真-ne不等于则为真-gt大于则为真-ge大于等于则为真-lt小于则为真-le小于等于......
  • Shell 数组
    Shell数组数组中可以存放多个值。BashShell只支持一维数组(不支持多维数组),初始化时不需要定义数组大小。与大部分编程语言类似,数组元素的下标由0开始。Shell数组用括号来表示,元素用"空格"符号分割开,语法格式如下:array_name=(value1value2...valuen)实例root@jdit:......
  • Shell 基本运算符
    Shell基本运算符Shell和其他编程语言一样,支持多种运算符,包括:算数运算符关系运算符布尔运算符字符串运算符文件测试运算符原生bash不支持简单的数学运算,但是可以通过其他命令来实现,例如awk和expr,expr最常用。这就很神奇了,和其他语言不同基本的原算法都要给第三方......
  • 常用 Git 命令
    Git是我们日常工作中使用频率极高的工具,各种指令让人眼花缭乱,今天,我们就在这里总结一下它的一些基本指令,算是做一份操作笔记吧。基本指令gitadd把要提交的文件的信息添加到暂存区中。当使用gitcommit时,将依据暂存区中的内容来进行文件的提交。它通常将现有路径的当前内容......
  • Linux数据分析之九个给力的命令行工具
    导读要对数据进行分析,大家会从哪里入手?对于大多数熟悉了图形工作环境的朋友来说,电子表格工具无疑是第一选项。但命令行工具同样能够更快更高效地解决问题——且只须稍微学习即可上手。要对数据进行分析,大家会从哪里入手?对于大多数熟悉了图形工作环境的朋友来说,电子表......
  • docker、compose安装及基础操作命令
    docker安装下载Docker依赖的组件yum-yinstallyum-utilsdevice-mapper-persistent-datalvm2设置下载docker服务的镜像源(阿里云)yum-config-manager--add-repohttp://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo安装docker服务yum-yinstalldocker-ce设置开机......
  • CMD、Powershell、Bash
    总体来说,CMD、Powershell和Bash都是命令行工具,用于执行各种命令和脚本,但它们的功能和用法都有所不同,根据不同的需求选择不同的命令行工具。CMDCMD(CommandPrompt)是Windows操作系统中的命令行工具,提供了基本的命令行交互功能,如文件管理、进程管理、网络管理等。CMD是Windows系统......
  • Shell数组练习
    1、将/etc/shadow文件的每一行作为元素赋值给数组#!/bin/bash#统计行数,作为循环次数num=`wc-l</etc/shadow`for((i=0;i<=num;i++))do#根据i的变化取前i行内容再然后截取最后一行加入数组中array[$i]=$(head-$i/etc/shadow|tail-1)done#依次输出数组中......
  • Debian下的压缩 (zip) 解压缩 (unzip) 命令
    安装aptinstall-yzipzip命令zip-rfilename.zip./*-r选项是指递归地(recursively)压缩指定目录(./当前目录)中的所有文件和文件夹zip-rfilename.zipfile1file2file3/path把file1、file2、file3、以及/path目录的内容(假设这个目录存在)压缩起来,......
  • Linux 常用命令(备忘)
    grep相关命令grep-h-BG|sort-rn|head-n3递归查询最大的三个文件(夹)-BG:以GB为单位输出大小-r:将结果反向输出(降序)-n:只以字符串的数组进行排序-n:以行的形式输出......