2008-05-14

awk编程示例

源文件如下:
Yellow#Junior
Orange#Senior
Yellow#Junior
Orange#Junior
Red#Senior
Red#Junior
现在需要统计文件中Yellow、Orange、Red个数以及Junior、Senior的个数。则利用awk编程
statistic1.awk
#!/bin/awk -f
BEGIN {
        FS = "#";
}
{
        split($0,students,"#");
        for (i in students) {
                if ( students[i] == "Yellow" ){
                        yellow_count +=1;
                } else if ( students[i] == "Orange" ) {
                        orange_count +=1;
                } else if ( students[i] == "Red" ) {
                        red_count +=1;
                } else if ( students[i] == "Junior" ) {
                        junior_count +=1;
                } else if ( students[i] == "Senior" ) {
                        senior_count +=1;
                }
        }
}
END {
        print "yellow_count:" yellow_count;
        print "orange_count:" orange_count;
        print "red_count:" red_count;
        print "junior_count:" junior_count;
        print "senior_count:" senior_count;
}

statistic2.awk
#!/bin/awk -f
BEGIN {
        FS="#"

        colours["Yellow"]
        colours["Orange"]
        colours["Red"]

        students["Junior"]
        students["Senior"]
}
{
        for ( colour in colours ) {
                if ($1 == colour) {
                        colours[colour]++;
                }
        }

        for ( student in students ) {
                if ( $2 == student ) {
                        students[student]++;
                }
        }
}

END {
        for ( colour in colours ) print "The Club has ", colours[colour],colour, "Beltes";
        for ( student in students ) print "The Club has ", students[student],student, "students";

}

比较这两个编程,明显第二个方法要比第一种方法来的简练。
评论
发表评论

您还没有登录,请登录后发表评论