Chinaunix
标题:
shell打印相对行的问题
[打印本页]
作者:
su_root
时间:
2015-07-31 11:39
标题:
shell打印相对行的问题
#!/bin/bash
DISKNUM=`df -h |sed '1d'`
I=0
for DISKN in `df -h | sed '1d'| awk '{print $5}'| cut -d '%' -f1`
do
if [[ $DISKN > 10 ]]
then
(这里希望系能显示空间不足的文件系统与剩余)
echo "filesystem good"
fi
((I++))
done
我的想法是通过$I记录正在读取的行数把空间不足的打印出来..但想不到怎么打印$I 行,求大牛指点
作者:
haooooaaa
时间:
2015-07-31 11:44
本帖最后由 haooooaaa 于 2015-07-31 11:54 编辑
你上面的的命令的结果, 在我这
df -h | sed '1d'| awk '{print $5}'| cut -d '%' -f1
/
0
7
复制代码
或者直接这样?
df -hl | awk '+$(NF-1)>50{print $NF}'
复制代码
空间大于 50,就打印
作者:
su_root
时间:
2015-07-31 11:55
本帖最后由 su_root 于 2015-07-31 11:56 编辑
回复
2#
haooooaaa
谢谢回复,发个你的df -h 的执行结果我看看么?
我写大于10不过是测试而已。。。按照思路大于80显示如下:
eg:
/data 空间不足剩余:20
另外,能给我讲讲awk '+$(NF-1)>50{print $NF}么?刚学AWK..谢谢
作者:
haooooaaa
时间:
2015-07-31 11:56
本帖最后由 haooooaaa 于 2015-07-31 11:57 编辑
回复
3#
su_root
[root@cAdmin ~]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/vg_centostest-lv_root
14G 1.8G 12G 14% /
tmpfs 499M 0 499M 0% /dev/shm
/dev/sda1 477M 28M 424M 7% /boot
复制代码
作者:
MMMIX
时间:
2015-07-31 12:23
本帖最后由 MMMIX 于 2015-07-31 12:25 编辑
回复
1#
su_root
何必这么麻烦,直接用 awk 就足够了:
df -h | awk 'NR > 1 { if ($5 + 0 > 20) { print $NF " is less than " 80 } }'
复制代码
作者:
Shell_HAT
时间:
2015-07-31 12:31
回复
5#
MMMIX
没这么简单,请注意观察4楼给出的例子里面有文件系统和使用率不在同一行的情况。
作者:
MMMIX
时间:
2015-07-31 12:43
回复
6#
Shell_HAT
我这 df (GNU coreutils 8.21) 不会断行。
作者:
haooooaaa
时间:
2015-07-31 12:47
回复
3#
su_root
awk '+$(NF-1)>50{print $NF}
$(NF-1) 是倒数第二列.
+$(NF-1) 可以说是 0+$(NF-1) 意思是把 倒数第二列转为数值, 然后再判断....
作者:
Shell_HAT
时间:
2015-07-31 13:12
回复
7#
MMMIX
手上没有这个版本的df无法测试。如果你那里有文件系统名字特别长,或者挂载了NFS的文件系统,可以都试试。
Linux系统可以用 df -P 避免换行
UNIX系统不支持 df -P 往往需要脚本里面自己处理
作者:
MMMIX
时间:
2015-07-31 13:49
回复
9#
Shell_HAT
这个就不太清楚了,我这文件系统名字最长就是30个字符。
欢迎光临 Chinaunix (http://bbs.chinaunix.net/)
Powered by Discuz! X3.2