shell命令-printf介绍
shell终端打印命令echo相信大家不陌生了吧最开始学的时候老师就教我们
# echo "Hello World"
Hello World
现在我来介绍一下另一个命令 printf
# printf "Hello World"
Hello World#
呵呵,是不是差不多,不同的地方就是没有自动换行!
printf 使用引用文本或空格分隔的参数,外面可以在printf中使用格式化字符串,还可以制定字符串的宽度、左右对齐方式等。默认printf不会想echo自动添加换行符,我们可以手动添加 \n
# printf "Hello World\n"
Hello World
#
我来用一个脚本来体现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
输出结果为:
# 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 ); }
[*]}'| sort -nrk 2 | head
怎么样,还行吧,快去试试吧!
页:
[1]