数组基础
数字变量只能定义一个数,数组可以定义多个数
数组有索引和值,一般的索引是使用0、1、2递增
awk数组也支持使用字符串为索引,类似于字典
Shell最简单的数组定义,为什么Shell数组不多讲?
numbers[0]=2
numbers[1]=4
numbers[2]=6
numbers[3]=8
echo ${numbers[0]} #第一个数
echo ${numbers[1]} #第二个数
echo ${numbers[n]} #第n+1个数
echo ${numbers[*]} #所有数字
unset numbers #删除变量
numbers=(2 4 6 8)
echo ${numbers[0]}
Shell关联数组支持用字符串为索引
declare -A info
info['name']="jackin"
info['age']=28
echo ${info['name']}
echo ${info['age']}
awk循环语法
for(i in 数组变量){
print i,数组变量[i]
}
array[0]++相当于
array[0] = array[0] + 1
awk的数组和循环打印,awk的数组还是比较常用的
awk 'BEGIN{ array[0]=2; array[1]=4; print array[1] }'
awk 'BEGIN{ array[0]=2; array[1]=4; array[2]=6; for(i in array){print i,array[i]} }' #简单数组的字义
awk 'BEGIN{ array[0]++;array[0]++; array[1]--; for(i in array){print i,array[i]} }' #数字默认值为0
awk 'BEGIN{ info["age"]=28; info["name"]="jackin"; for(i in info){print i,info[i]} }' #awk数组字符串索引
awk统计每个城市出现的次数
cat /tmp/jackin | awk '{print $3}'| sort |uniq -c #效率差,因为还排序
cat /tmp/jackin |awk '{ count[$3]++ }END{for(city in count){print city,count[city]} }'