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