1. awk关联数组,捕捉长度和域值数目不知足要求的数组 1.awk => #!/usr/bin/awk length($1) > 2 {e++; print "long name in line", NR} NF != 1 {e++; print "bad name count in line", NR} END {if (e > 0) print "total errors: ", e} # cat 1 => 223 xiaobao 32 caoqing 42 52 2245 2 # awk -f 1.awk 1 => long name in line 1 bad name count in line 1 bad name count in line 2 long name in line 5 total errors: 4 2. 给定n个名字的文件,生成所有的n*n个名字 2.awk => #!/usr/bin/awk { name[$1] = 1 } END { for (i in name) for(j in name) {print i, j}; } # cat 2 => huanhuan xiaobao caoqing grafield # awk -f 2.awk 2 => grafield grafield grafield huanhuan grafield caoqing grafield xiaobao huanhuan grafield huanhuan huanhuan huanhuan caoqing huanhuan xiaobao caoqing grafield caoqing huanhuan caoqing caoqing caoqing xiaobao xiaobao grafield xiaobao huanhuan xiaobao caoqing xiaobao xiaobao 3. 统计个数 3.awk => #!/usr/bin/awk {count[$1] += $2} END{ for (i in count) {print count[i], i}; } # cat 3 => caoqing:20 xiaobao:100 caoqing:5 wanghuan:4 xiaobao:10 # awk -F":" -f 3.awk 3 4 wanghuan 25 caoqing 110 xiaobao 4. 统计单词个数 4.awk => #!/usr/bin/awk { for(i=1; i<NF; i++) count[$i]++ } END { for ( i in count) {print count[i], i} } # cat 4 caoqing xiaobao wanghuan xiaobao xiaobao wanghuan xiaobao caoqing # awk -f 4.awk 4 2 wanghuan 1 caoqing 4 xiaobao