在 awk 中可以识别 print 输出动作和 printf 输出动作
区别是:print 会在每个输出之后自动加入一个换行符;而 printf 是标准格式输出命令,并不会自动加入换行符,如果需要换行,则需要手工加入换行符
在 Bash 中只有 printf 命令。另外,printf 命令只能格式化输出具体数据,不能直接输出文件内容或使用管道符,所以 printf 命令的格式还是比较特殊的。
输出类型:
- %ns:输出字符串。n 是数字,指代输出几个字符;
- %ni:输出整数。n 是数字,指代输出几个数字‘’
- %m.nf: 输出浮点数。m 和 n 是数字,指代输出的整数位数和小数位数。如 %8.2f 代表共输出 8 位数,其中 2 位是小数,6 位是整数;
输出格式:
- \a: 输出警告声音;
- \b:输出退格键,也就是 Backspaced 键;
- \f:清除屏幕;
- \n:换行;
- \r:回车,也就是 Enter 键;
- \t:水平输出退格键,也就是 Tab 键;
- \v:垂直输出退格键,也就是 Tab 键; ```shell //每列都是空格间隔 [root@kylin236 ~ 11:06:07]# cat 1.txt ID Name PHP Linux MySQL Average 1 Liming 82 95 86 87.66 2 Sc 74 96 87 85.66 3 Gao 99 83 93 91.66
//格式化输出
注意:在printf命令的单引号中只能识别格式输出符号,而手工输入的空格是无效的
[root@kylin236 ~ 11:05:57]# printf ‘%s\t %s\t %s\t %s\t %s\t %s\t\n’ $(cat 1.txt) ID Name PHP Linux MySQL Average 1 Liming 82 95 86 87.66 2 Sc 74 96 87 85.66 3 Gao 99 83 93 91.66
// %i 是整数 ,%s是字符串 \t表示tab制表符 // %8.2f 代表共输出 8 位数,其中 2 位是小数,6 位是整数 //第一列输出整数,第二列输出字符串,第三列输出整数,第四列整数,第五列整数,第六列可以输出小数 //如果不去除包含有Name的列,那么名称在每一列都会被按规则去匹配整数,就会报错。 [root@kylin236 ~ 11:19:54]# printf ‘%i\t %s\t %i\t %i\t %i\t %8.2f\t\n’ $(cat 1.txt|grep -v Name ) 1 Liming 82 95 86 87.66 2 Sc 74 96 87 85.66 3 Gao 99 83 93 91.66
```
printf ‘%i\t %s\t %i\t %i\t %i\t %8.2f\t\n’ $(cat 1.txt|grep -v Name )
这个语句是执行顺序是先把括号内的内容执行出来,再打印内容