当前位置: 首页 > news >正文

Linux常用基本命令:三剑客命令之-awk数组用法

AWK的数组用法跟javascript类似。

1,定义数组

awk 'BEGIN{a[0]="zhangsan";a[1]="lisi";print a[0]}'

2,打印一个没有定义的数组项,值为空

awk 'BEGIN{a[0]="zhangsan";a[1]="lisi";print a[2]}'

3,判断一个数组项 是否存在,用 ( 下标 in 数组 )

ghostwu@dev:~/linux/awk$ awk 'BEGIN{a[0]="zhangsan";a[1]="lisi"; if( 1 in a ) print a[1]; }'
lisi

4,数组也可以用关联索引定义

ghostwu@dev:~/linux/awk$ awk 'BEGIN{a["name"]="张三";a["name2"]="李四";print a["name"]}'
张三

5,delete:删除一个数组项或者一个数组

ghostwu@dev:~/linux/awk$ awk 'BEGIN{a["name"]="张三";a["name2"]="李四";print a["name"]; delete a["name"]; print a["name"]; }'
张三

ghostwu@dev:~/linux/awk$ awk 'BEGIN{a["name"]="张三";a["name2"]="李四";print a["name"]; delete a["name"]; print a["name2"]; }'
张三
李四
ghostwu@dev:~/linux/awk$ awk 'BEGIN{a["name"]="张三";a["name2"]="李四";print a["name"]; delete a; print a["name2"]; }'
张三

6,数字,字符串都可以进行算术运算

>当一个不存在的元素,参与算术运算时,会被当做0

>当一个元素是字符串,参与算术运算时,会被当做0

ghostwu@dev:~/linux/awk$ awk 'BEGIN{ a = 1; print a; a = a + 1; print a }'
1
2
ghostwu@dev:~/linux/awk$ awk 'BEGIN{ a = "ghostwu"; a = a + 1; print a }'
1
ghostwu@dev:~/linux/awk$ awk 'BEGIN{ print a[0]; a[0] = a[0] + 1; print a[0] }'

1

7,应用,统计某个字符串出现的次数

ghostwu@dev:~/linux/awk$ awk '{count[$2]++} END{ for( i in count ) { print i,count[i]; } }' host.txt 
192.177.81.1 1
10.0.0.5 3
192.168.9.254 1
192.168.1.1 3
192.168.3.98 2
ghostwu@dev:~/linux/awk$ cat host.txt 
host1    192.168.1.1
host2    192.177.81.1
host3    10.0.0.5
host4    192.168.3.98
host5    192.168.3.98
host6    192.168.9.254
host7    192.168.1.1
host8    192.168.1.1
host9    10.0.0.5
host10    10.0.0.5

 

相关文章:

  • 第一个hibernate程序
  • Java 学习(02)--数据类型/类型转换/键盘录入
  • Mac中显示文件夹的大小
  • 逛自己的微博,回顾曾经的那个“我”
  • 定制化vue-cli Template/webpack
  • linux常用命令之用户及用户组操作
  • Ubuntu x86-64汇编(5) 控制指令
  • DOM4J使用简介
  • Python学习之路13-记分
  • 怎样解决chm类型的文件在Windows操作系统中无法打开
  • k8s 环境搭建,etcd启动失败
  • 给Notepad++ 加右键菜单带图标
  • SharePoint On Premise/ SharePoint Online增强格式的文本栏
  • Android SQLite
  • nginx keepalive
  • CentOS7简单部署NFS
  • Docker 1.12实践:Docker Service、Stack与分布式应用捆绑包
  • JavaScript服务器推送技术之 WebSocket
  • Magento 1.x 中文订单打印乱码
  • Nginx 通过 Lua + Redis 实现动态封禁 IP
  • Redis 中的布隆过滤器
  • Twitter赢在开放,三年创造奇迹
  • use Google search engine
  • uva 10370 Above Average
  • Vue UI框架库开发介绍
  • 想晋级高级工程师只知道表面是不够的!Git内部原理介绍
  • 一个普通的 5 年iOS开发者的自我总结,以及5年开发经历和感想!
  • C# - 为值类型重定义相等性
  • Nginx实现动静分离
  • 关于Android全面屏虚拟导航栏的适配总结
  • 如何在 Intellij IDEA 更高效地将应用部署到容器服务 Kubernetes ...
  • ​​​​​​​​​​​​​​Γ函数
  • #图像处理
  • (12)Hive调优——count distinct去重优化
  • (done) NLP “bag-of-words“ 方法 (带有二元分类和多元分类两个例子)词袋模型、BoW
  • (八)Flask之app.route装饰器函数的参数
  • (附源码)ssm航空客运订票系统 毕业设计 141612
  • (附源码)SSM环卫人员管理平台 计算机毕设36412
  • (四)JPA - JQPL 实现增删改查
  • (转)IOS中获取各种文件的目录路径的方法
  • (转)大型网站架构演变和知识体系
  • * CIL library *(* CIL module *) : error LNK2005: _DllMain@12 already defined in mfcs120u.lib(dllmodu
  • ****** 二 ******、软设笔记【数据结构】-KMP算法、树、二叉树
  • .class文件转换.java_从一个class文件深入理解Java字节码结构
  • .equal()和==的区别 怎样判断字符串为空问题: Illegal invoke-super to void nio.file.AccessDeniedException
  • .L0CK3D来袭:如何保护您的数据免受致命攻击
  • .net core 6 redis操作类
  • .NET HttpWebRequest、WebClient、HttpClient
  • .net遍历html中全部的中文,ASP.NET中遍历页面的所有button控件
  • .NET关于 跳过SSL中遇到的问题
  • .Net下的签名与混淆
  • :O)修改linux硬件时间
  • @Bean注解详解
  • [ C++ ] STL_vector -- 迭代器失效问题
  • [ linux ] linux 命令英文全称及解释