关闭

Shell printf 命令

标签: shellprintf
2628人阅读 评论(0) 收藏 举报
分类:

上篇博文我们说了 Shell echo-使用echo实现更复杂的输出格式控制

这篇博文我们来学习 Shell 的另一个输出命令 printf。

语法

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

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

printf 使用引用文本或空格分隔的参数,外面可以在printf中使用格式化字符串,还可以制定字符串的宽度、左右对齐方式等。

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

printf 命令的语法:

printf  format-string  [arguments...]

参数说明:

  • format-string: 为格式控制字符串
  • arguments: 为参数列表。

栗子

$ echo "Hello, Shell"
Hello, Shell
$ printf "Hello, Shell\n"
Hello, Shell
$

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

#!/bin/bash

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 

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

姓名     性别   体重kg
郭靖     男      66.12
杨过     男      48.65
郭芙     女      47.99
  • %s %c %d %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的转义序列

这里写图片描述

栗子

$ 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.xiaogongjiang.com \a"
www.xiaogongjiang.com $                  #不换行
1
0
查看评论
发表评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场

shell学习三十四天----printf详解

printf 先来看一个简单的例子:使用命令printf “hello,world\n”, 输出:hello,world 再使用echo “hello,world\n”,输出为:hello,wo...
  • shanyongxu
  • shanyongxu
  • 2015-07-03 17:22
  • 7188

【Bash百宝箱】shell内建命令之echo、printf

1、echo在shell中,内建(builtin)命令echo,格式如下:echo [-neE] [arg ...]echo命令用于输出各参数arg,参数间以空格分隔,结尾是个换行符。选项“-n”禁止...
  • iEearth
  • iEearth
  • 2016-09-23 18:01
  • 1343

Linux Shell 学习笔记(七)---echo命令和printf命令

echo命令 echo是Shell的一个内部指令,用于在屏幕上打印出指定的字符串。命令格式: echo  arg 可以使用echo实现更复杂的输出格式控制。 显示转义字符 echo "\"...
  • scgaliguodong123_
  • scgaliguodong123_
  • 2015-01-02 17:39
  • 1566

Shell编程-字符截取命令-cut printf awk sed 命令

  • 2015-10-26 00:01
  • 1.36MB
  • 下载

Shell编程-字符截取命令-printf命令

  • 2014-08-21 15:24
  • 465KB
  • 下载

shell printf命令:格式化输出语句

printf 命令用于格式化输出, 是echo命令的增强版。它是C语言printf()库函数的一个有限的变形,并且在语法上有些不同。 注意:printf 由 POSIX 标准所定义,移植性要比 ...
  • csdnxmj
  • csdnxmj
  • 2017-05-14 18:53
  • 265

Shell——printf 命令

printf 命令模仿 C 程序库(library)里的 printf() 程序。 标准所定义,因此使用printf的脚本比使用echo移植性好。 printf 使用引用文本或空格分隔的参数,外面...
  • sinat_36053757
  • sinat_36053757
  • 2017-04-21 17:29
  • 171

shell printf命令:格式化输出语句

printf 命令用于格式化输出, 是echo命令的增强版。它是C语言printf()库函数的一个有限的变形,并且在语法上有些不同。 注意:printf 由 POSIX 标准所定义,移植性要比 ...
  • zhushuai1221
  • zhushuai1221
  • 2016-11-08 22:32
  • 458

(9)shell printf命令:格式化输出

printf 命令用于格式化输出, 是echo命令的增强版。printf 输出简单的字符串:$printf "Hello, Shell\n" Hello, Shellprintf 不像 echo 那样...
  • qq_17416741
  • qq_17416741
  • 2016-02-03 09:23
  • 244

shell printf命令:格式化输出语句

printf 命令用于格式化输出, 是echo命令的增强版。它是C语言printf()库函数的一个有限的变形,并且在语法上有些不同。 注意:printf 由 POSIX 标准所定义,移植性要比 ...
  • yuanxiaojun1990
  • yuanxiaojun1990
  • 2015-12-29 14:22
  • 442
    个人资料
    • 访问:1210237次
    • 积分:17955
    • 等级:
    • 排名:第617名
    • 原创:456篇
    • 转载:0篇
    • 译文:5篇
    • 评论:148条
    WeChat
      欢迎关注我的公众号,干货只有干货,还有更多惊喜和资源在等着你
    博客专栏