严格来说,printf命令并不是字符提取命令。
命令格式:printf ‘输出类型输出格式’ 要输出的内容
作用:把要输出的内容,按照指定的格式匹配输出。
注意:printf不能直接输出文件中的内容,也不支持管道符。
输出类型:
%ns:输出字符串。n是数字指代输出几个字符
%ni:输出整数。n是数字指代输出几个数字
%m.nf:输出浮点数。m和n是数字,指代输出的整数位数和小数位数。如%8.2f代表共输出8位数,其中2位是小数,6位是整数。
输出格式:
\a: 输出警告声音
\b: 输出退格键,即backspace键
\f: 清除屏幕
\n: 换行
\r: 回车,即enter键
\t: 水平输出退格键,即tab键
\v: 垂直输出退格键,即tab键
示例:
[root@localhost ~]# printf %s 1 2 3 4 5 6
123456
[root@localhost ~]# printf %s%s%s 1 2 3 4 5 6
%s%s123456
[root@localhost ~]# printf '%s%s%s\n' 1 2 3 4 5
12345
[root@localhost ~]# printf '%sa%s%s\n' 1 2 3 4 5 6
1a234a56
[root@localhost ~]# printf '%s%s%s\n' "1 2 3 4 5 6"
1 2 3
4 5 6
[root@localhost ~]# printf '%5s\n' 1 2 3
1
2
3
[root@localhost ~]# printf '%5s\n' "123456"
123456
[root@localhost ~]# printf '%5s\n' "123"
123
[root@localhost ~]# printf '%8i\n' 3
3
[root@localhost ~]# printf '%5.2f\n' 3
3.00
注意:输出格式%s必须用引号括起来(单引号或双引号都行)。
printf 输出文本内容:
[root@localhost ~]# vi student.txt
ID Name PHP Linux MySQL Ave
1 Liming 82 95 86 87.5
2 Sc 74 96 87 85.5
3 Gao 99 83 93 91.5
[root@localhost ~]# printf '%s' $(cat student.txt)
#不调整输出格式
[root@localhost ~]# printf '%s\t %s\t %s\t %s\t %s\t %s\n' $(cat student.txt)
#调整格式输出
#直接连续输出所有文本
说明:
在awk命令的输出中支持print和printf。
- print会在每个输出之后,自动加上一个换行符。(Linux默认没有print命令)。
- printf是以指定的标准格式输出,并不会自动加入换行符,一般都是手工加\n。
awk中使用的print或printf并不是Linux的命令,它们是awk中自带的。