awk 用 > 出错, 用>=没事

awk 用 > 出错, 用>=没事

用df -k 显示如下:
Filesystem             1K-块        已用     可用 已用% 挂载点
/dev/mapper/VolGroup00-LogVol00
                       7773064   3974600   3403612  54% /
/dev/sda1               101086      9208     86659  10% /boot
none                     95580         0     95580   0% /dev/shm
我想查找使用超过 50% 的项
我用 df -k | awk '{if($5 >= /50%/) print $0}'  显示

Filesystem             1K-块        已用     可用 已用% 挂载点
/dev/sda1               101086      9208     86659  10% /boot
none                     95580         0     95580   0% /dev/shm

可我想显示 54% 那项,却没有显示.怎么回事?而且用 > 就出错.

      
54% 那行的 $5 是 / 而不是 54%

$5 >= /50%/ 是什么用法? 跟 regular expression 比较怎么理解?      
$5 就是第四项的 54%,我想显示 使用率超过 54%的项.

我想应该这么写
df -k | awk '{if($5 > M) print $0 }' M="45%"   对不对.

----------------------

      
按照你的要求,你应该是比较数字的大小  
但是 :  $ > '54%'     肯定不是数字的比较了。 呵呵

试一下下面的代码:
[CODE]
df   |  awk '
    BEGIN {M=50}
    $5 ~ /[1-9]/ {                             # or   NR > 1{
        var = substr($5, 0, length($5) -1);
        if(var > M) {print $0 }
} '
[/CODE]

edit : %5 ~ /[1-9]/ {  ====>  $5 ~ /[1-9]/  {

      
引用:
原帖由 risefly 于 2008-3-20 22:24 发表
$5 就是第四项的 54%
俺一直以为 awk 中的 $5 表示第五项啊, 难道俺记错了?      
引用:
原帖由 yunccll 于 2008-3-21 03:14 发表
按照你的要求,你应该是比较数字的大小  
但是 :  $ > '54%'     肯定不是数字的比较了。 呵呵

试一下下面的代码:

df   |  awk '
    BEGIN {M=50}
    %5 ~ /[1-9]/ {                             ...
執行錯誤呀

$ df   |  awk '
    BEGIN {M=50}
    %5 ~ /[1-9]/ {                             # or   NR > 1{
        var = substr($5, 0, length($5) -1);
        if(var > M) {print $0 }
} '
awk: cmd. line:2:     %5 ~ /[1-9]/ {                             # or   NR > 1{
awk: cmd. line:2:     ^ syntax error

fang@bash ~
$      
journalist
這樣呢 ?
fang@bash ~
$ df
Filesystem            Size  Used Avail Use% Mounted on
E:\cygwin\bin         2.5G  1.1G  1.5G  43% /usr/bin
E:\cygwin\lib         2.5G  1.1G  1.5G  43% /usr/lib
E:\cygwin             2.5G  1.1G  1.5G  43% /
c:                    7.8G  3.8G  4.1G  48% /cygdrive/c
e:                    2.5G  1.1G  1.5G  43% /cygdrive/e

fang@bash ~
$ df | awk '{x=substr($5, 1, 2); if( x > 45 ){print}}'
Filesystem            Size  Used Avail Use% Mounted on
c:                    7.8G  3.8G  4.1G  48% /cygdrive/c

fang@bash ~
$

fang@bash ~
$ uname -a
CYGWIN_NT-5.1 bash 1.5.25(0.156/4/2) 2008-03-05 19:27 i686 Cygwin

fang@bash ~
$      
journalist
还是给个 example 吧
引用:
-(dearvoid@LinuxEden:Forum)-(~/tmp)-
[$$=3899 $?=0] ; cat df.out
Filesystem           1K-blocks      Used Available Use% Mounted on
/dev/hda1             36969672  17322356  17769320  50% /
varrun                  257408      5712    251696   3% /var/run
varlock                 257408         4    257404   1% /var/lock
udev                    257408       112    257296   1% /dev
devshm                  257408         0    257408   0% /dev/shm
lrm                     257408     18856    238552   8% /lib/modules/2.6.15-51-386/volatile
//192.168.4.20/tmp   239742976  33812480 205930496  65% /mnt/tmp
-(dearvoid@LinuxEden:Forum)-(~/tmp)-
[$$=3899 $?=0] ; cat df.out | awk '{ if ($5 + 0 >= 50) print; }'
/dev/hda1             36969672  17322356  17769320  50% /
//192.168.4.20/tmp   239742976  33812480 205930496  65% /mnt/tmp
-(dearvoid@LinuxEden:Forum)-(~/tmp)-
[$$=3899 $?=0] ; bye
      
版主的相當不錯         
journalist
引用:
原帖由 twf_cc 于 2008-3-22 13:32 发表
版主的相當不錯   
I'm glad to hear that

PS: 前面俺这个回帖在 Firefox 3 Beta 4 (Windows 版) 中怎么乱乱的呢