练习题----Linux awk数组

有命令: 
awk’BEGIN { Arr[2,79]=78; ____ }’ 
为了让执行的结果是78,应该填()语句

A. print Arr[“2\03479”] 
B. print Arr[2,79] 
C. idx=2 SUBSEP 79;print Arr[idx] 
D. print Arr[ 2, 79]

1.awk 中数组叫做关联数组(associative arrays),下标可以是数字也可以是字符串。awk 中的数组不必提前声明,也不必声明大小,初始化数组元素用 0 或空串,这根据上下文而定。

2.语法: awk '{pattern + action}'    或   awk 'pattern {action}'

其中 pattern 表示 AWK 在数据中查找的内容, action 是在找到匹配内容时所执行的一系列命令。花括号 {} 不需要在程序中始终出现,但它们用于根据特定的模式对一系列指令进行分组(作用域)。

3.awk的BEGIN块在从外部读入数据之前就得到执行,这里只有BEGIN块,因此执行结果跟外部输入无关。

4.答案是ABCD全对。 awk数组,字符串为索引。 
SUBSEP为数组下标的分隔符,预设值为“\034”,awk中的数组只接受字串当它的数组下标,awk在接受Arr[2,79]之前,就已将其下标转成字串“2\03479”,之后变便以Arr[“2\03479”]代替Arr[2,79]。故A,B,C,D全正确

猜你喜欢

转载自blog.csdn.net/snowyuuu/article/details/81809292