一、数组实践
1、数组定义和简单调用
创建数组 score,定义三个课程元素,并赋值
bash
awk 'BEGIN{score["yuwen"]=98;score["shuxue"]=99;score["yingyu"]=100;print score["yuwen"],score["shuxue"],score["yingyu"]}'

2、遍历数组
使用 for 循环遍历数组,注意不能用关键字 index
bash
awk 'BEGIN{score["yuwen"]=98;score["shuxue"]=99;score["yingyu"]=100;for(i in score){print score[i]}}'

3、自动遍历数组
bash
awk -F',' '{for(i=1;i<NF;i++){array[i]=$i};for(j in array){print array[j]}}' data.csv

4、数组去重
awk中,0 为假,非 0 为真
array[0\]++ 第一次执行时为 array\[0],未初始化,所以 array[a] 为 0(假),所以 !0 取反为真,打印数组元素a,然后"++"自增运算符将变量值 +1。
遇到到重复值的时候,因为 array[a] 已经存在,array[a] 为1(真),所以 !1 取反后为假,所以不在打印当前内容,达到去重目的
bash
awk '!array[$0]++' data1.csv

二、自定义函数实践
语法格式
bash
function 函数名(参数1, 参数2, ...)
{
函数体代码
}
函数名不能用 awk 的关键字信息
简单实践
bash
awk '
function add_func(num1, num2)
{
return num1 + num2
}
function sub_func(num1, num2)
{
if (num1 > num2)
return num1 - num2
return num2 - num1
}
BEGIN {
sum_result=add_func(10, 20)
print "两值之和为: "sum_result
sub_result=sub_func(10, 20)
print "两值之差为: "sub_result
}'
