读书人

一段awk脚本代码 不解

发布时间: 2012-02-09 18:22:27 作者: rapoo

一段awk脚本代码 不解 请指教
源代码如下:
[root@kaven ctest]# cat belts.awk
#!/bin/awk -f
BEGIN{
FS="#"
belt["Yellow"]
belt["Orange"]
belt["Red"]

student["Junior"]
student["Senior"]
}

{
for(colour in belt)
{
if( $1 == colour )
belt[colour]++
}
}
{
for(senior_or_junior in student)
{
if( $2 == senior_or_junior)
student[senior_or_junior]++
}
}

END{
for( colour in belt )
print "the club has", belt[colour],colour,"Belts"
for( senior_or_junior in student)
print "the club has", student[senior_or_junior],senior_or_junior,"students"
}

[root@kaven ctest]# cat grade_student.txt
Yellow#Junior
Orange#Senior
Yellow#Junior
Purple#Junior
Brown-2#Junior
White#Senior
Orange#Senior
Red#Junior
Brown-2#Senior
Yellow#Senior
Red#Junior
Blue#Senior
Green#Senior
Purple#Junior
White#Junior

[root@kaven ctest]# ./belts.awk grade_student.txt
the club has 2 Red Belts
the club has 2 Orange Belts
the club has 3 Yellow Belts
the club has 7 Senior students
the club has 8 Junior students

请问
(1)belt["Yellow"]
belt["Orange"]
belt["Red"]是否是开辟一个belt的数组,数组大小为3

(2)colour in belt 中colour是否是依次取值为Yellow,Orange,Red
但又是如何赋值的?


[解决办法]
1)belt是个哈希表,分别初始以"Yellow", "Orange", "Red"为索引的三个变量,为0
2) 是的
赋值相当于belt["Yellow"]++
[解决办法]
这个不应该理解成数组,因为单元里没有储存数据。

应该理解成enum枚举类型。

读书人网 >UNIXLINUX

热点推荐