Chinaunix首页 | 论坛 | 博客
  • 博客访问: 340260
  • 博文数量: 38
  • 博客积分: 1289
  • 博客等级: 中尉
  • 技术积分: 533
  • 用 户 组: 普通用户
  • 注册时间: 2008-06-10 22:30
个人简介

Good Good Study. Day Day Up.

文章分类

全部博文(38)

文章存档

2018年(1)

2016年(3)

2015年(12)

2014年(7)

2013年(10)

2012年(5)

分类: LINUX

2018-05-15 10:57:46

网友提问:


当前文件系统,有两个使用率大于60%的文件系统,/和/mnt/suseISO
#df -h
Filesystem               Size  Used Avail Use% Mounted on
devtmpfs                 237M     0  237M   0% /dev
tmpfs                    244M     0  244M   0% /dev/shm
tmpfs                    244M  1.8M  243M   1% /run
tmpfs                    244M     0  244M   0% /sys/fs/cgroup
/dev/mapper/system-root  9.8G  5.7G  3.6G  62% /
tmpfs                     49M     0   49M   0% /run/user/0
/dev/sr0                 4.4G  4.4G     0 100% /mnt/suseISO

执行语句1后发现只显示了/目录,执行语句2可以显示/mnt/suseISO目录。不明白为什么这样。

语句1:
#df -k|sed '1d'|awk 'sub("%","",$5) {if ($5 > 60) print $6}'
/

语句2:
#df -k|sed '1d'|awk 'sub("%","",$5) {if ($5 > 10) print $6}'
/
/mnt/suseISO

原因分析:sub之后的数据类型是字符串,不能直接用于数字比较

# echo 12% | gawk '{sub("%","",$1);print "$1:"typeof($1); if($1>2)print $1">2";else print $1"<=2"}'
$1:string
12<=2 (这个显然不是我们想要的结果)

解决方法1:使用自动类型转换 $1+0
# echo 12% | gawk '{sub("%","",$1);print "$1:"typeof($1)" $1+0:" typeof($1+0); if(($1+0)>2)print $1">2";else print $1"<=2"}'
$1:string $1+0:number
12>2

解决方法2:使用强制类型转换 strtonum($1)
# echo 12% | gawk '{sub("%","",$1);print "$1:"typeof($1)" strtonum($1):" typeof(strtonum($1)); if(strtonum($1)>2)print $1">2";else print $1"<=2"}'
$1:string strtonum($1):number
12>2

本文使用的 gawk 的版本是 4.2.1
低版本的 gawk 可能不支持 typeof
阅读(2644) | 评论(0) | 转发(0) |
0

上一篇:WebLogic/WebSphere等中间件控制台语言切换

下一篇:没有了

给主人留下些什么吧!~~