- 论坛徽章:
- 0
|
awk数组 看了好长时间就是不懂:
awk '{!a[$1]}{a[$1]+=$2}END{for(i in a){print i"\t"a[i]}}'
a[i]和a[$1] 是什么关系,我理理解这俩是可以划等号的,都是代表数组a的一个元素,用于指向$2的某个值,但总觉得别扭,可能没有理解透。
就是搞不明白awk 用域来做为下标这种使用方法,用域作为数组下标,然后再把某个域赋给这个数组,如:a[$1]=$2,不懂, 写成 a[1]=$2 就必懂了
awk ‘{if[$1]=$2;}else{arrary[$1]=array[$1]+$2;}}END{print array[a];}’
还是数组 array[a]和 a[$1]关系搞不明白,到底有什么区别,怎么用?
又如:awk '{a[$0]=$2}END{for(i in a) print a[i]}'
a[i]是代表数组某一个元素,应是指向$2的某一个值,但学是理解不透,和前的a[$0]=$2对应起来,就完全不明白了。
以上是我学习awk中遇到的一个难题,也是在学习awk中唯一遇到的很长时间都搞不懂的一个难题,一直不明白用域如($0)还做数组下标,然后再给数组赋一个域,a[$0]=$2,为什么这样做,其实可能很简单,但就转不过歪了,大家莫笑啊,呵呵。
|
|