printf脚本使用格式化字符串
#!/bin/bash
#使用格式化字符串来指定字符串的宽带,左右对齐方式等。
printf "%-5s %-10s %-4s\n" NO. NAME MARK
printf "%-5s %-10s %-4.2f\n" 1 Jack 80.3456
printf "%-5s %-10s %-4.2f\n" 2 James 90.9989
printf "%-5s %-10s %-4.2f\n" 3 Jeff 77.564
# bash printf.sh
NO. NAME MARK
1 Jack 80.35
2 James 91.00
3 Jeff 77.56
备注:%s,%c,%d和%f都是格式替换符,它们定义了该如何打印后续参数。%-5s指明了一个格式为左对齐且宽度为5的字符串替换(-表示左对齐,如果不指明-,就表示右对齐)。
宽度指定了保留给某个字符串的字符数量,对NAME而言,其保留宽度是10,因此,任何NAME字段的内容都会被显示在10字符宽的保留区域内,如果内容不足10个字符,余下的则以空格填充。
对于浮点数,可以使用其它参数对小数部分进行四舍五入;对于MARK字段,我们将其格式化为%-4.2f,其中的.2是指定保留两位小数,例子中的91.00是被递进了的。
需要注意的是,每行的格式字符串后都有一个换行符号\n;默认情况下,printf不会自动添加换行符,必须在需要的时候手动添加。
结束。