格式化列印命令printf
格式化列印命令printf
语法: printf ‘列印格式’ 实际内容
参数:
参数 | 作用 |
---|---|
\a | 警告声音输出 |
\b | 倒退键(backspace) |
\f | 清除萤幕 (form feed) |
\n | 输出新的一行;换行 |
\r | 亦即 Enter 按键 |
\t | 水平的 [tab] 按键 |
\v | 垂直的 [tab] 按键 |
\xNN | NN 为两位数的数字,可以转换数字成为字节。 |
关於 C 程序语言内,常见的变量格式 | |
%ns | 那个 n 是数字, s 代表 string ,亦即多少个字节; |
%ni | 那个 n 是数字, i 代表 integer ,亦即多少整数码数; |
%N.nf | 那个 n 与 N 都是数字, f 代表 floating (浮点),如果有小数码数,假设我共要十个位数,但小数点有两位,即为 %10.2f 罗! |
示例
# 错误示范 输出 123456
[userwin@MiWiFi-R3L-srv learn]$ printf %s 1 2 3 4 5 6
123456[userwin@MiWiFi-R3L-srv learn]$
# 错误示范 %s %s 1 2 3 4 5 6 作为整体 输出 %s%s123456
[userwin@MiWiFi-R3L-srv learn]$ printf %s %s %s 1 2 3 4 5 6
%s%s123456[userwin@MiWiFi-R3L-srv learn]$
# 错误示范 输出列不如预期
[userwin@MiWiFi-R3L-srv learn]$ printf '%s %s %s' 1 2 3 4 5 6
1 2 34 5 6[userwin@MiWiFi-R3L-srv learn]$
# 正确示范
[userwin@MiWiFi-R3L-srv learn]$ printf '%s %s %s\n' 1 2 3 4 5 6
1 2 3
4 5 6
cat 和 printf的区别
# cat 查看文本命令
[userwin@MiWiFi-R3L-srv learn]$ cat student1.txt
No Name Mark Percent
01 tom 69 91
02 jack 71 87
03 alex 68 98
# student1.txt 被当成字符串
[userwin@MiWiFi-R3L-srv learn]$ printf '%s' student1.txt
student1.txt[userwin@MiWiFi-R3L-srv learn]$
# 不支持管道符
[userwin@MiWiFi-R3L-srv learn]$ cat student1.txt | printf '%s'
[userwin@MiWiFi-R3L-srv learn]$
# 可以先查看 student1.txt 在通过printf 输出; 但输入内容却失去了之前的格式
[userwin@MiWiFi-R3L-srv learn]$ printf '%s' $(cat student1.txt)
NoNameMarkPercent01tom699102jack718703alex6898[userwin@MiWiFi-R3L-srv learn]$
[userwin@MiWiFi-R3L-srv learn]$
‘%s\t %s\t %s\t %s\t \n’
%s 代表一个字符串;显然上面是4个字符串
\t 代表制表符tab
\n 代表换行符
[userwin@MiWiFi-R3L-srv learn]$ printf '%s\t %s\t %s\t %s\t \n' $(cat student1.txt)
No Name Mark Percent
01 tom 69 91
02 jack 71 87
03 alex 68 98
printf 和print区别
printf
printf 是linux标准格式输出命令,
不能自动加入换行符;想要换行,需要自定义格式。
print:不是系统命令;但awk命令支持print
输出后自动加入换行符
书山有路勤为径,学海无涯苦作舟