蚊子最近在写网络tcpping测试的脚本,最终输出结果需要格式化好入库,于是学了一下perl中printf的用法,特此记录下来,以免忘了。
printf函数可以格式化输出字符串
用法:
printf FILEHANDLE FORMAT, LIST
printf FORMAT, LIST
例如:
printf函数先格式化字符串再输出到指定文件或当前缺省文件中,如:
printf OUTFILE (“You owe me %8.2f", $owing);
此语句取出变量$owing的值并替换掉串中的%8.2f,%8.2f是域格式的例子,把$owing的值看作浮点数。
使用printf格式化输出
printf 函数有一个模板,叫格式字符串,它可以规定输出的格式,每个格式符有百分号开头,由字母结束。
格式化字符串中有3个格式符,则对应3个元素
%g 输出数字,它将根据需要自动选用浮点数,整数或者指数
%d 十进制整数 %x 十六进制 %o八进制 根据需要截尾
%f or %s 限制宽度 其中正数是右对齐,负数是左对齐
%s是针对字符串的,如%10s, %-15s
% f 针对数字的,如%12.3f (表示输出共12个字符,包括小数点,并且小数点后面只有3位数)
%% 输出百分号,不会使用后面列表中的元素
下面看一个对齐输出的例子:
#!/usr/bin/perl
use warnings;
use strict;
my @arr;
while(){
chomp;
@arr=split;
printf "%-50s%-20s\n",$arr[0],$arr[1];
print "===================\n";
}
__DATA__
PRODUCT:NLSRTL VERSION:10.2.0.1.0 STATUS:Production
PRODUCT:OracleDatabase10gEnterpriseEdition VERSION:10.2.0.1.0 STATUS:Prod
PRODUCT:PL/SQL VERSION:10.2.0.1.0 STATUS:Production
PRODUCT:TNSforLinux: VERSION:10.2.0.1.0 STATUS:Production
输出如下:
PRODUCT:NLSRTL VERSION:10.2.0.1.0 =================== PRODUCT:OracleDatabase10gEnterpriseEdition VERSION:10.2.0.1.0 =================== PRODUCT:PL/SQL VERSION:10.2.0.1.0 =================== PRODUCT:TNSforLinux: VERSION:10.2.0.1.0 ===================
下面看下蚊子脚本的输出结果:
2012-02-01 11:33 119.97.167.233 125.64.0.1 0% 24.54 24.54 24.54 四川 ctc 2012-02-01 11:33 119.97.167.233 219.148.168.182 0% 47.41 47.41 47.41 内蒙 ctc 2012-02-01 11:33 119.97.167.233 59.49.14.1 0% 37.12 37.12 37.12 山西 ctc 2012-02-01 11:33 119.97.167.233 219.141.0.1 0% 49.36 49.36 49.36 贵州 ctc 2012-02-01 11:33 119.97.167.233 61.138.193.1 0% 41.10 41.10 41.10 云南 ctc 2012-02-01 11:33 119.97.167.233 58.44.48.1 0% 26.65 26.65 26.65 湖南 ctc 2012-02-01 11:33 119.97.167.233 219.150.112.2 0% 13.03 13.03 13.03 河南 ctc 2012-02-01 11:33 119.97.167.233 123.180.0.1 0% 51.25 51.25 51.25 河北 ctc 2012-02-01 11:33 119.97.167.233 202.101.100.1 0% 23.92 23.92 23.92 福建 ctc 2012-02-01 11:33 119.97.167.233 61.139.202.1 0% 28.83 28.83 28.83 广西 ctc 2012-02-01 11:33 119.97.167.233 61.150.0.1 0% 15.53 15.53 15.53 陕西 ctc 2012-02-01 11:33 119.97.167.233 202.96.96.1 0% 16.36 16.36 16.36 浙江 ctc 2012-02-01 11:33 119.97.167.233 124.224.8.134 0% 34.53 34.53 34.53 宁夏 ctc 2012-02-01 11:33 119.97.167.233 112.98.11.1 0% 56.33 56.33 56.33 黑龙江 ctc 2012-02-01 11:33 119.97.167.233 113.248.0.1 0% 36.76 36.76 36.76 重庆 ctc 2012-02-01 11:33 119.97.167.233 202.96.133.1 0% 22.05 22.05 22.05 广东 ctc 2012-02-01 11:33 119.97.167.233 219.146.0.252 0% 40.02 40.02 40.02 山东 ctc 2012-02-01 11:33 119.97.167.233 218.30.25.218 0% 21.80 21.80 21.80 北京 ctc 2012-02-01 11:33 119.97.167.233 219.149.194.55 0% 49.40 49.40 49.40 吉林 ctc 2012-02-01 11:33 119.97.167.233 218.77.128.78 0% 41.16 41.16 41.16 海南 ctc 2012-02-01 11:33 119.97.167.233 59.53.96.246 0% 13.40 13.40 13.40 江西 ctc 2012-02-01 11:33 119.97.167.233 218.95.227.1 0% 68.96 68.96 68.96 青海 ctc 2012-02-01 11:33 119.97.167.233 61.178.6.234 0% 25.87 25.87 25.87 甘肃 ctc 2012-02-01 11:33 119.97.167.233 218.4.122.250 0% 22.89 22.89 22.89 江苏 ctc 2012-02-01 11:33 119.97.167.233 110.152.0.1 0% 66.44 66.44 66.44 新疆 ctc 2012-02-01 11:33 119.97.167.233 219.151.34.1 0% 73.75 73.75 73.75 西藏 ctc 2012-02-01 11:33 119.97.167.233 61.190.246.182 0% 10.84 10.84 10.84 安徽 ctc 2012-02-01 11:33 119.97.167.233 202.96.197.1 3% 31.04 31.04 31.04 上海 ctc 2012-02-01 11:33 119.97.167.233 219.150.98.1 1% 26.09 26.09 26.09 天津 ctc 2012-02-01 11:33 119.97.167.233 59.175.246.38 1% 2.80 2.80 2.80 湖北 ctc 2012-02-01 11:33 119.97.167.233 123.184.0.1 0% 49.71 49.71 49.71 辽宁 ctc
原帖:http://blog.sina.com.cn/s/blog_4af3f0d20100go37.html
© 2012, 深夜的蚊子. 版权所有. 如转载,请注明:转载自 蚊子空间[http://www.wenzizone.cn]