您的位置:首页 > 运维架构 > Shell

shell命令-printf介绍

2012-03-14 13:26 232 查看
shell终端打印命令echo相信大家不陌生了吧

最开始学的时候老师就教我们

[root@localhost ~]# echo "Hello World"

Hello World

现在我来介绍一下另一个命令 printf

[root@localhost ~]# printf "Hello World"

Hello World[root@localhost ~]#

呵呵,是不是差不多,不同的地方就是没有自动换行!

printf 使用引用文本或空格分隔的参数,外面可以在printf中使用格式化字符串,还可以制定字符串的宽度、左右对齐方式等。默认printf不会想echo自动添加换行符,我们可以手动添加 \n

[root@localhost ~]# printf "Hello World\n"

Hello World

[root@localhost ~]#

我来用一个脚本来体现printf的功能吧

#!/bin/bash

printf "%-10s %-8s %-4s\n" 姓名 性别 体重kg
printf "%-10s %-8s %-4.2f\n" 郭靖 男 66.1234
printf "%-10s %-8s %-4.2f\n" 杨过 男 48.6543
printf "%-10s %-8s %-4.2f\n" 郭芙 女 47.9876

输出结果为:

[root@localhost ~]# sh printf.sh

姓名 性别 体重kg

郭靖 男 66.12

杨过 男 48.65

郭芙 女 47.99

怎么样 效果还不错吧(不过中文支持不太好,字符占位和字母不同!)

%s %c %d %f都是格式替代符

%-10s 指一个宽度为10个字符(-表示左对齐,没有则表示右对齐),任何字符都会被显示在10个字符宽的字符内,如果不足则自动以空格填充,超过也会将内容全部显示出来。

%-4.2f 指格式化为小数,其中.2指保留2位小数。

至于怎么打好出来好看,还得慢慢根据内容调试噢!

我们再来用它做个现实的脚本!

列出1小时内占用CPU最多的10个进程

#!/bin/bash
#列出最常用的10条历史命令

printf "%-32s %-10s\n" 命令 次数
cat ~/.bash_history | awk '{ list [$1] ++; } \
END {
for (i in list )
{
printf ("%-30s %-10s\n",i,list [i]); }
}'| sort -nrk 2 | head





怎么样,还行吧,快去试试吧!

本文出自 “毛线的linux之路” 博客,请务必保留此出处http://maoxian.blog.51cto.com/4227070/805712
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: