当我使用 awk 时,'if'条件检查对我不起作用

  • 本文关键字:条件 不起作用 if awk awk
  • 更新时间 :
  • 英文 :


让一组用户在/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的用户,但这是您的方法的固有缺陷,需要不同的解决方案。

最新更新