我正在尝试打印可用空间大于零的目录名称。
#Listed all the directory and their consumed space.
du -sm storage*
365 storage1
670 storage2
1426 storage3
我的阈值为1000M,所以我试图在相对于提供的阈值的这些目录中打印可用空间。
du -sm storage* | awk -v threshold="1000" '$1>0{print $1=threshold-$1,$2}'
635 storage1
330 storage2
-426 storage3
所以,我想打印那些空闲大小为正整数的目录。类似的东西:
635 storage1
330 storage2
有任何更正吗?
答案 0 :(得分:3)
你可以这样写,
awk -v threshold="1000" '{$1=threshold-$1} $1 > 0'
示例强>
awk -v threshold="1000" '{$1=threshold-$1} $1 > 0' input
635 storage1
330 storage2
它的作用是什么?
$1=threshold-$1
设置相对于阈值的第一列。
$1 > 0
检查派生的第一列是否大于零。如果此表达式的计算结果为true,则会打印整个输入行。
答案 1 :(得分:2)
我觉得这太复杂了。如果您只想检查大小是否为正且低于给定阈值,请说:
awk -v threshold=1000 '0 < $1 && $1 < threshold'
$ cat file
635 storage1
330 storage2
-426 storage3
$ awk -v thr=1000 '0 < $1 && $1 < thr' file
635 storage1
330 storage2
答案 2 :(得分:1)
只需检查$1 > 0
awk
即可
du -sm storage*|awk '{if ( $1 > 0 ) print }'
或
du -sm storage*|awk '$1>0'