awk实战3-awk数组技巧

awk一个神奇而又强大的功能,绝对是一个开发利器,效率直选!希望这里的一些总结能帮到那些存在困惑的人!

awk实战1-基础语法说明

awk实战2-流程控制语句总结

awk实战3-awk数组技巧

awk实战4-函数系列-算数函数说明

awk实战5-函数系列-基本字符串函数

awk实战6-函数系列-字符串函数说明-asort和sub

awk实战7-函数系列-时间函数

awk实战8-函数系列-字节操作

awk实战9-IO函数-getline和close

awk实战10-IO函数-其他介绍

awk实战11-进阶-10种awk有效应用实战

awk实战12-进阶-再谈awk匹配模式

awk处理小问题-解决局部jar包替换

数组是awk的灵魂,也是文本处理必不可少功能;

1 awk数组定义-关联数组

AWK 可以使用关联数组这种数据结构,索引可以是数字或字符串。

AWK关联数 组也不需要提前声明其大小,因为它在运行时可以自动的增大或减小。

数组使用的语法格式:

array_name[index]=value
  • array_name:数组的名称
  • index:数组索引
  • value:数组中元素所赋予的值

wk 中的数组不必提前声明,也不必声明大小。数组元素用0或空字符串来初始化,这根据上下文而定。

2 awk数组定义与读取

#### 1 - 数字做数组索引
Array[1]="hello"
Array[2]="world"
#### 2 - 字符串做数组索引
Array["first"]="www"
Array["last"]="byby"
Array["year"]="1990"
Array["lilei"]="my name is lilei"
#### 3-读取数组
{ for(item in array) {print array[item]}; }       #输出的顺序是随机的
{ for(i=1;i<=len;i++) {print array[i]}; }         #Len是数组的长度

如下所示是一个数组使用样例

$ awk 'BEGIN {
sites["runoob"]="www.runoob.com";
sites["google"]="www.google.com"
print sites["runoob"] "\n" sites["google"]
}'

3 awk删除数组元素

我们可以使用 delete 语句来删除数组元素,语法格式如下:

delete array_name[index

4 awk多维数组

AWK 本身不支持多维数组,不过我们可以很容易地使用一维数组模拟实现多维数组。---实用字符串索引;

如下图所示为一个示例:

$ awk 'BEGIN {
array["0,0"] = 100;
array["0,1"] = 200;
array["0,2"] = 300;
array["1,0"] = 400;
array["1,1"] = 500;
array["1,2"] = 600;
# 输出数组元素
print "array[0,0] = " array["0,0"];
print "array[0,1] = " array["0,1"];
print "array[0,2] = " array["0,2"];
print "array[1,0] = " array["1,0"];
print "array[1,1] = " array["1,1"];
print "array[1,2] = " array["1,2"];
}'

5 awk数组函数

获取数组-实用split分割字符串得到数组

awk 'BEGIN{info="it is a test";lens=split(info,tA," ");print length(tA),lens;}'

6 awk数组函数使用问题

使用awk数组的时候曾经遇到这样一个问题

awk: line 1: illegal reference to array a

出现问题的原因一般是awk对数组函数不支持,原因推测和版本相关,解决也很简单``sudo apt-get install gawk.

如下是网上的一些说明:

#### 问题描述:
https://www.e-learn.cn/content/wangluowenzhang/1084707
#### awk的几个版本说明
https://blog.csdn.net/gechangli7/article/details/51547641
  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值