让一组用户在/nobackup中拥有磁盘空间。我想过滤那些正在使用更多空间的70G的用户
INPUT格式:磁盘空间目录/用户名
输入:
351G /nobackup/dwoo
80G /nobackup/snjos
73G /nobackup/ka
67G /nobackup/mseer
67G /nobackup/monche
65G /nobackup/sambut
64G /nobackup/submee
64G /nobackup/jushe
64G /nobackup/dichr
63G /nobackup/n
如果磁盘空间超过70G ,则使用AWK修改此输出以仅打印名称
cat /tmp/test | awk '{var=substr($1, 1, length($1)-1); split($2,a,"/"); if(var > 70) {print a[3]}}'
在输出中,我只得到
snjos
ka
我应该在哪里获得
dwoo
snjos
ka
因为$1是字符串(它包含非数字(,所以>
运算符是词法比较(即字典顺序(,其中"3"<"7"。您需要先将$1转换为数字:通过添加零将其放入数字上下文中。
if ($1 + 0 > 70) {print a[3]}
您正在定义var
,但从未使用过它。我建议让awk剥离G,并通过更改字段分隔符来分割路径:
awk '$1 > 70 { print $NF}' FS=[G/] /tmp/test
请注意,这种方法会错误地匹配使用800M的用户,但这是您的方法的固有缺陷,需要不同的解决方案。