LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 777|回复: 0

AWK 单脚本多表头问题

[复制链接]
发表于 2007-6-4 09:40:21 | 显示全部楼层 |阅读模式
请问怎么能做到在一个脚本内实现多个表头。

如:

Jim Green:31:10:1965:Glasgow:34
David Brown:12:07:1945ondon:56
/Arthur Brown's brother
Arthur Brown:10:02:1938:Glasgow:45
Tom:31:02:1938D:47

用脚本:
#!/bin/gawk -f
BEGIN{
FS=":";
print "\n名字\t生日\t出生地\t年龄\t\n\n"
}

{
        if($1!~/\//){
                        if($3>12||$3<1){
                                $7="错误月份"
                                        }
                print $0                         }

可实现排除以”/“开头的行并在出现错误月份位置加注错误月份标识,但是如果需要添加第二个表,第三个表如何实现?

#!/bin/gawk -f
BEGIN{
FS=":";
print "\n名字\t\t生日\t\t出生地\t\t年龄\t\n\n"
}

{
        if($1!~/\//){
                        if($3>12||$3<1){
                                $7="错误月份"
                                        }
                                       
                print $0;               
                # table 2 begin
                print "\n\nTable 2 begin \n\n","lace\t","number of people\n";
                cnt[$5]++;
                for(name in cnt){
                                print name,"\t" cnt[name];
                                }
                       
                #Table 3 begin
                print "\n\n","Born in month\t","Average age\tNum\n";
                eachMonth[$3]++;
                sum[$3]+=$6;
                for(month in eachMonth){
                print month,"\t",sum[month]/eachMonth[month],eachMonth[month]
                                        }
                }
}

END{

}

如果用以上代码,表2,表3的表重复打印(每读一行输出一次结果),且表一不能正常输出只能打印出第一行。感觉问题是出在if($1!~/\//) 上。但是不明白为什么。
望高手指点。多谢啦。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表