awk 比较问题

# df -h|grep "/dev/ram0"|awk '{
                                        temp=$4;
                                        if(temp ~ /G$/)  print 1;
                                        else if(temp ~ /M$/) {
                                                sub("M","",temp);print temp;
                                                if(temp > "300") print 1;else print 0;
                                        }      
                        }'
1020
0


# df -h|grep "/dev/ram0"|awk '{
                                        temp=$4;
                                        if(temp ~ /G$/)  print 1;
                                        else if(temp ~ /M$/) {
                                                sub("M","",temp);print temp;
                                                if(temp > 300) print 1;else print 0;
                                        }      
                        }'
1020
0
# df -h|grep "/dev/ram0"|awk '{
                                        temp=$4;
                                        if(temp ~ /G$/)  print 1;
                                        else if(temp ~ /M$/) {
                                                sub("M","",temp);print "#"temp"#";
                                                if(temp > 300) print 1;else print 0;
                                        }      
                        }'
#1020#
0

神马问题,1020不大于300 ?

作者: hover_sky   发布时间: 2011-06-03

本帖最后由 hover_sky 于 2011-06-03 15:21 编辑

df -h|grep "/dev/ram0"|awk '{
                                        temp=$4;
                                        if(temp ~ /G$/)  print 1;
                                        else if(temp ~ /M$/) {
                                                sub("M","",temp);print "#"temp"#";
                                                if ( int(temp) > 300 ) print 1;else print 0;  
                                        }

作者: hover_sky   发布时间: 2011-06-03

本帖最后由 jason680 于 2011-06-03 15:17 编辑


QUOTE:
# df -h|grep "/dev/ram0"|awk '{
                                        temp=$4;
                 ...
hover_sky 发表于 2011-06-03 14:49




$ echo "1 2 3 1200M" | awk '{temp=$4;sub("M$","",temp);print temp;if(temp > 300)print "Yes";else print "No";}'
1200
Yes

$ echo "1 2 3 1200M" | awk '{temp=$4;sub("M$","",temp);print temp;if(temp > "300")print "Yes";else print "No";}'
1200
No

可能是版本问题....   

$ awk -W version
GNU Awk 3.1.6
Copyright (C) 1989, 1991-2007 Free Software Foundation.

作者: jason680   发布时间: 2011-06-03

ascii 比较, 1 小于 3

else if(temp ~ /M$/) {
        if ( temp+0 > 300 ) print 1;else print 0;  
}

作者: ly5066113   发布时间: 2011-06-03