Shell三剑客:awk(awk编辑编程)五

一、前言

  • AWK 可以使用关联数组这种数据结构,索引可以是数字或字符串。
  • AWK关联数 组也不需要提前声明其大小,因为它在运行时可以自动的增大或减小。

二、数组语法格式

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

三、创建数组

        定义了一个站点(sites)数组,该数组的索引为网站英文简称,值为网站访问地址

[root@192 ~]# awk 'BEGIN {
> sites["liang"]='www.liang.com';
> awk 'BEGIN {
sites["liang"]='www.liang.com';^C
[root@192 ~]# awk 'BEGIN {
sites["liang"]="www.liang.com";
> sites["google"]="www.google.com"
> print sites["liang"] "\n" sites["google"]
> }'
www.liang.com
www.google.com

 

四、访问数组元素

        访问数组元素语法格式:array_name[index]

#访问数组元素
[root@192 ~]# awk -F: '{username[++i]=$1} END{print username[1]}' /etc/passwd
root
[root@192 ~]# awk -F: '{username[i++]=$1} END{print username[1]}' /etc/passwd
bin
[root@192 ~]# awk -F: '{username[i++]=$1} END{print username[0]}' /etc/passwd
root#按元数个数遍历
[root@192 ~]# awk -F: '{username[x++]=$1} END{for(i=0;i<x;i++)print i,username[i]}' /etc/passwd
0 root
1 bin
2 daemon
3 adm
4 lp
5 sync
6 shutdown
7 halt
8 mail
9 operator
10 games#按索引遍历
[root@192 ~]# awk -F: '{username[x++]=$1} END{for(i in username) {print i,us
ername[i]}}' /etc/passwd
35 liangl
26 qian
17 postfix
4 lp
36 han
27 yoa
18 chrony
5 sync
28 huang
19 apache[root@192 ~]# awk -F: '{username[++x]=$1} END{for(i in username) {print i,username[i]}}' /etc/passwd
35 ji
26 abc
17 sshd
4 adm
36 liangl
27 qian
18 postfix
5 lp
37 han
28 yoa
19 chrony

 

 

 

五、删除数组元素

        删除数组元素语法格式 使用 delete 语句来删除数组元素,语法格式如下:delete array_name[index] 

        删除数组元素 删除数组中的 google 元素(删除命令没有输出):

[root@192 ~]# awk 'BEGIN {
> sites["liang"]="www.liang.com";
> sites["google"]="www.google.com"
> delets sites["google"];
> print fruits["google"]
> }'

 

六、多维数组 

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

        模拟二维数组

[root@192 ~]# 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"];
> }'
array[0,0]=100
array[0,1]=200
array[0,2]=300
array[1,0]=400
array[1,1]=500
array[1,2]=600
#实例中,array0 存储 100,array0 存储 200 ,依次类推。要在 array0 处存储 100, 使用: array["0,0"] = 100。使用 0,0 作为索引,这并不是两个索引值,而是一个字符串索引 0,0。

        在数组上可以执行很多操作,比如,使用 asort 完成数组元素的排序,或者使用 asorti 实现数组 索引的排序等等。 

 

 

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/226739.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【数据结构】C语言实现双链表的基本操作

双链表及其基本操作的实现 导言一、单链表与双链表二、双链表类型的创建三、双链表的初始化四、双链表的创建五、双链表的遍历六、双链表的查找七、双链表的插入八、双链表的删除结语 导言 大家好&#xff0c;很高兴又和大家见面啦&#xff01;&#xff01;&#xff01; 经过…

【adb】--- win10 配置 adb环境 超详细 (持续更新中)

在编程的艺术世界里&#xff0c;代码和灵感需要寻找到最佳的交融点&#xff0c;才能打造出令人为之惊叹的作品。而在这座秋知叶i博客的殿堂里&#xff0c;我们将共同追寻这种完美结合&#xff0c;为未来的世界留下属于我们的独特印记。 【adb】--- win10 配置 adb环境 超详细 &…

解决Qt“报无法定位程序输入点xxx于动态连接库“问题

今天&#xff0c;在使用QtVS2019编译工程时&#xff0c;弹出"无法定位程序输入点xxx于动态链接库"问题&#xff0c;如图(1)所示&#xff1a; 图(1) 报"无法定位程序输入点xxx于动态链接库"问题 出现这种问题的原因有很多&#xff1a; (1) 工程Release/Deb…

低代码选型注意事项

凭借着革命性的生产力优势&#xff0c;低代码技术火爆了整个IT圈。面对纷繁复杂的低代码和无代码产品&#xff0c;开发者该如何选择&#xff1f; 在研究低代码平台的年数上&#xff0c;本人已有3年&#xff0c;也算是个低代码资深用户了&#xff0c;很多企业面临低代码选型上的…

iOS 开发设计 App 上架符合要求的截图

1. 真机运行截屏 2. 可以在 Apple developer 官网 Design 下找到 iPhone 边框 https://developer.apple.com/design/resources/ 不用这个边框也行&#xff0c;可以参考已上架 App 的图片框 3. 使用 Procreate&#xff08;PhotoShop&#xff09;创建符合要求的画布大小 4. 导入…

听GPT 讲Rust源代码--src/tools(27)

File: rust/src/tools/clippy/clippy_lints/src/methods/suspicious_to_owned.rs 文件rust/src/tools/clippy/clippy_lints/src/methods/suspicious_to_owned.rs的作用是实施Clippy lint规则&#xff0c;检测产生潜在性能问题的字符转换代码&#xff0c;并给出相关建议。 在Rus…

智能优化算法应用:基于袋獾算法3D无线传感器网络(WSN)覆盖优化 - 附代码

智能优化算法应用&#xff1a;基于袋獾算法3D无线传感器网络(WSN)覆盖优化 - 附代码 文章目录 智能优化算法应用&#xff1a;基于袋獾算法3D无线传感器网络(WSN)覆盖优化 - 附代码1.无线传感网络节点模型2.覆盖数学模型及分析3.袋獾算法4.实验参数设定5.算法结果6.参考文献7.MA…

【UE5.1】程序化生成Nanite植被

目录 效果 步骤 一、下载Gaea软件和树林资产 二、使用Gaea生成贴图 三、 生成地形 四、生成草地 五、生成树林 六、生成湖泊 七、其它功能介绍 7.1 调整树林生成的面积 7.2 让植物随风飘动 7.3 玩家和植物互动 7.4 雪中树林 7.5 环境音效 效果 步骤 一、下载Ga…

HBase 集群搭建

文章目录 安装前准备兼容性官方网址 集群搭建搭建 Hadoop 集群搭建 Zookeeper 集群解压缩安装配置文件高可用配置分发 HBase 文件 服务的启停启动顺序停止顺序 验证进程查看 Web 端页面 安装前准备 兼容性 1&#xff09;与 Zookeeper 的兼容性问题&#xff0c;越新越好&#…

信息泄露总结

文章目录 一、备份文件下载1.1 网站源码1.2 bak文件泄露1.3 vim缓存1.4 .DS_Store 二、Git泄露2.1 git知识点2.1 log2.2 stash 三、SVN泄露3.1 SVN简介3.2 SVN的文件3.3 SVN利用 四、Hg泄露 一、备份文件下载 1.1 网站源码 常见的网站源码备份文件后缀&#xff1a; tartar.gz…

非阻塞 IO(NIO)

文章目录 非阻塞 IO(NIO)模型驱动程序应用程序模块使用 非阻塞 IO(NIO) 上一节中 https://blog.csdn.net/tyustli/article/details/135140523&#xff0c;使用等待队列头实现了阻塞 IO 程序使用时&#xff0c;阻塞 IO 和非阻塞 IO 的区别在于文件打开的时候是否使用了 O_NONB…

深入浅出图解C#堆与栈 C# Heap(ing) VS Stack(ing) 第五节 引用类型复制问题及用克隆接口ICloneable修复

深入浅出图解C#堆与栈 C# Heaping VS Stacking 第五节 引用类型复制问题及用克隆接口ICloneable修复 [深入浅出图解C#堆与栈 C# Heap(ing) VS Stack(ing) 第一节 理解堆与栈](https://mp.csdn.net/mdeditor/101021023)[深入浅出图解C#堆与栈 C# Heap(ing) VS Stack(ing) 第二节…

spdlog中的异步日志方案

日志方案 同步日志方案&#xff1a;立即输出日志记录的方案才能继续执行其他任务。 异步日志方案&#xff1a;先抛出一个日志记录的任务到某个地方&#xff0c;不马上执行打印也不影响往下执行其他任务。 二者关键区别是产生日志记录并调用相关的日志任务接口之后&#xff0…

【Kafka】Kafka客户端认证失败:Cluster authorization failed.

背景 kafka客户端是公司内部基于spring-kafka封装的spring-boot版本&#xff1a;3.xspring-kafka版本&#xff1a;2.1.11.RELEASE集群认证方式&#xff1a;SASL_PLAINTEXT/SCRAM-SHA-512经过多年的经验&#xff0c;以及实际验证&#xff0c;配置是没问题的&#xff0c;但是业务…

【JVM】虚拟机的组成+字节码文件组成+类的生命周期

什么是JVM&#xff1f; JVM 本质上是一个运行在计算机上的程序&#xff0c;他的职责是运行Java字节码文件。 JVM的功能 1.解释和运行&#xff1a;对字节码文件中的指令实时的解释成机器码让计算机执行。 2.内存管理&#xff1a;自动为对象、方法等分配内存&#xff0c;自动…

平升电子水库监管平台SQL注入漏洞复现

0x01 产品简介 唐山平升电子水库监管平台通过实时监测、数据分析、预警系统和远程控制等功能&#xff0c;为水库管理部门提供了一种全面、高效的数字化解决方案&#xff0c;帮助他们更好地管理和监控水库&#xff0c;确保水库的安全运行。 0x02 漏洞概述 唐山平升电子水库监…

sqlite3 c++ VS编译生成静态库

官网 https://www.sqlite.org/download.html 下载sqlite-amalgamation和x86版本下载sqlite-dll-win32-x86、x64位版本sqlite-dll-win64-x64 解压 SQLITE-AMALGAMATION包含 shell.csqlite3.csqlite3.hsqlite3ext.hsqlite-dll-win32-x86包含 sqlite3.def sqlite3.dll建立一个空…

Prometheus-JVM

一. JVM监控 通过 jmx_exporter 启动端口来实现JVM的监控 Github Kubernetes Deployment Java 服务&#xff0c;修改 wget https://repo1.maven.org/maven2/io/prometheus/jmx/jmx_prometheus_javaagent/0.19.0/jmx_prometheus_javaagent-0.19.0.jar# 编写配置文件&#xff0…

limit查询报错问题

分页时候 limit 后面的公式是 (pageNum-1)*pageSize,pageSize 但是在数据库查询时候 当然在.XML中也不能像下面这么写,如果要计算 在业务层或者控制层计算好再传值进来

c++ / day01

1. 整理思维导图 2. 定义自己的命名空间myspace&#xff0c;并在myspace中定义一个字符串&#xff0c;实现求字符串大小的函数。 代码 #include <iostream>using namespace std;namespace myns {unsigned long long strlen(string s){return s.length();}}int main() {…