23、print 和 printf 格式化输出、echo 在终端或文件中输出文本
1、printf 命令
用于格式化并输出数据,它比更基础的 echo 命令更强大和稳定。
printf "格式字符串" [参数1] [参数2] ...
printf不会自动添加换行符,除非你在格式字符串中明确使用\n。特性 说明 无自动换行 必须显式写 \n才换行精确格式控制 支持 C 风格格式说明符(如 %s,%d,%6.2f)无默认分隔符 完全由格式字符串控制布局
格式说明符 (Format Specifiers)
| 说明符 | 用途 | 示例 | 输出 |
|---|---|---|---|
%s |
字符串 | printf "%s\n" "Hello" |
Hello |
%d |
十进制整数 | printf "%d\n" 25 |
25 |
%f |
浮点数 | printf "%f\n" 3.14 |
3.140000 |
%x |
十六进制整数 | printf "%x\n" 255 |
ff |
%o |
八进制整数 | printf "%o\n" 8 |
10 |
%c |
单个字符 | printf "%c\n" 65 |
A |
%b |
解释反斜杠转义的字符串 | printf "%b" "Hello\nWorld" |
Hello 换行 World |
%q |
以 Shell 可重用的格式输出 | printf "%q" "A B" |
A\ B |
常用转义序列 (Escape Sequences)
| 序列 | 作用 |
|---|---|
\n |
换行 (Newline) |
\t |
制表符 (Tab) |
\\ |
反斜杠 (Backslash) |
\0 |
空字符 (Null) |
\" |
双引号 (Double quote) |
如:
awk 'BEGIN { printf "|%-15s|\n", "Alice" }' //将字符串左对齐,占用至少 15 个字符宽度,不足部分用空格填充
// 输出,"Alice"(5字符) + 10个空格 = 15字符,左对齐
|Alice |
| 部分 | 含义 |
|---|---|
% |
格式说明符开始标志 |
- |
左对齐(默认是右对齐) |
15 |
最小字段宽度为 15 个字符 |
s |
表示参数是 字符串(string) |
注:字符串超过最小宽度字符,不会截断! 字符串完整输出。宽度只是“最小值”,超长照常输出。
| 格式 | 说明 |
|---|---|
%s |
默认字符串(右对齐,无固定宽度) |
%10s |
右对齐,至少10字符 |
%-10s |
左对齐,至少10字符 |
%.10s |
最多输出10个字符(截断长字符串) |
%10.10s |
至少10字符,最多10字符(固定宽度,不足补空格,超长截断) |
2、print 命令
print [item1, item2, ...]
-
各项目之间用逗号分隔,输出时会被输出字段分隔符(OFS) 隔开,默认为空格。
-
每条
print语句执行后会自动添加换行符。 -
如果
print后面没有参数,省略表达式,默认输出$0(整行)特性 说明 自动换行 每次 print后自动添加\n(换行符)字段分隔 多个表达式间用 OFS(Output Field Separator) 分隔,默认是空格 简单直接 适合快速输出,无需格式控制
3、echo
用于将参数内容输出到标准输出(通常是终端)。它常用于显示消息、变量值、调试脚本或生成简单文本。
echo [选项] [字符串...]
- 如果不带任何参数,
echo会输出一个空行。 - 多个字符串之间用空格分隔,输出时自动以单个空格连接。
| 选项 | 作用 | 说明 |
|---|---|---|
-n |
不输出末尾换行符 | 默认 echo 会在结尾加 \n,-n 可取消 |
-e |
启用反斜杠转义解释 | 如 \n, \t, \r 等(在 Bash 中默认不启用) |
-E |
禁用转义解释(默认行为) | 多数系统默认如此 |
如:
echo Hello World # 输出:Hello World echo "Hello, World" # 引号内多个空格会被保留(但 echo 默认不解释转义) # 输出:Hello, World
常见转义序列(配合 -e):
\n:换行\t:制表符(Tab)\r:回车\\:反斜杠\a:响铃(beep)\b:退格
# 没有 -e 选项,转义字符会被原样输出 echo "Hello\nWorld" # 输出:Hello\nWorld(字面输出) # 使用 -e 选项,转义字符生效 echo -e "Hello\nWorld" # 输出: # Hello # World echo -e "Tab\there" # 输出:Tab here(中间是制表符)
本文来自博客园,作者:chao_xiong,转载请注明原文链接:https://www.cnblogs.com/chao-xiong/p/19272649

浙公网安备 33010602011771号