当前位置:网站首页>shell三剑客-----awk命令
shell三剑客-----awk命令
2022-08-08 13:56:00 【AKA|布鲁克林欧神仙】
一,awk概述
AWK是一种处理文本的语言,是一个强大的文件分析工具。
它专门为文本处理设计的编程语言,也是行处理软件,通常用于扫描过滤统计词汇等工作,数据可以来自标准输入也可以是管道或者文件。
1,awk工作原理
- 当读到第一行时,匹配条件,然后执行指定动作,在接着读取第二行的数据处理,不会默认输出。
- 如果没有定义匹配条件,则是默认匹配所有数据行,awk隐含循环,条件匹配多少次,动作就会执行多少次。
- 逐行读取文本,默认以空格或tab键为分割符进行分割,将分割所得的各个字段,保存到内建变量中,并按模式或条件执行编辑命令
与sed比较
- sed命令常用一整行的处理,二awk比较倾向于将一行分成多个字段然后再进行处理。
- awk信息的读入也是逐行读取的,执行结果可以通过print功能将字段数据打印显示。
- 在使用awk命令的过程中,可以使用逻辑操作符。(&&“表示"与”、“||表示"或”、"!“表示非”;还可以进行简单的数学运算,如+、一、*、/、%、^分别表示加、减、乘、除、取余和乘方。)
二,awk的格式
格式1:awk [选项] '模式或条件{编辑指令}' 文件1
**********
格式2:awk -f 脚本文件 文件名1,awk包含几个特殊的内建变量
| 内置变量 | 功能 |
| NF | 当前处理的行的字段个数(就是:有多少列) |
| NR | 当前处理的行的行号(就是:有多少行 |
| FNR | 读取文件的记录数(行号),从1开始,新的文件重新从1开始计数 |
| $0 | 当前处理的行的整行内容(就是:表示一行的内容) |
| $n | 当前处理行的第n个字段(就是:第n列 |
| FILENAME | 被处理的文件名 |
| FS | 指定每行的字段分隔符,默认为空格或制表位(相当于选项 -F ) |
| OFS | 输出字段的分隔符,默认也是空格 |
| RS | 行分割符。awk从文件上读取资料时,将根据Rs的定义把资料切割成许多条记录,而awk一次仅读取一条记录,预设值是“\n“ |
| ORS | 输出分割符,默认也是换行符 |
三,内置变量演示
案例1:结合print进行输出,默认分隔符


案例2:设定分割符号


用x作为分隔符

显示一个空格,空格需要用双引号引起来,如果不用引号默认以变量看待,如果是常量就需要双引号引起来。

逗号有空格效果

用制表符作为分隔符号

定义多个分隔符,只要看到其中一个都算作分隔符

2, awk常用内置变量
| $1 | 代表第一列 |
| $2 | 代表第二列以此类推 |
| $0 | 代表整行 |
| NF | 一行的列数 |
| NR | 行数 |


3,NF(多少列) 和[NR](所少行)的演示
NR:表示该处理的行序号是多少
NF:表示该处理的行,有多少列
案例1:打印每一行的列数

案例2:显示行号

案例3:显示行号,并显示每一行的内容
案例4:打印第二行,不加print也一样,默认就是打印

案例5:打印第二行的第一列

案例6:打印最后一列

案例7:打印总行数


案例8:打印文件最后一行

案例9:加上文字描述行数和列数


四,面试题
案例1:查看本机的ip地址多少,截取出来


案例2:查看本机流量有多少字节

案例3:查看根分区的可用量

五。BEGIN开始和END结尾
边栏推荐
猜你喜欢

Tsinghua | GLM-130B: An Open Bilingual Pre-training Model

京东三面惨遭被虐,关于redis,高并发,分布式,问懵了

OpenInfra Days China 2022 |StreamNative 翟佳、刘德志受邀分享

看到这个应用上下线方式,不禁感叹:优雅,太优雅了!
![[Redis] Redis installation and use of client redis-cli (batch operation)](/img/08/34f2c1cda8992e20ecd28b26d1e66a.png)
[Redis] Redis installation and use of client redis-cli (batch operation)

华为云弹性云服务器ECS使用【华为云至简致远】

【Rust—LeetCode题解】1408.数组中的字符串匹配

【系统设计】S3 对象存储

如果Controller里有私有的方法,能成功访问吗?

idea增加左右箭头
随机推荐
清华|GLM-130B:一个开放的双语预训练模型
TS+Hooks二次封装antd Modal,实现可拖拽
年初离职,学习半年源码,终于拿到了蚂蚁Offer,分享面试过程
Qt的简易日志库实现及封装
logistic回归模型—基于R
零基础入门华为云数据库RDS【华为云至简致远】
R语言使用位置索引筛选dataframe的数据列:筛选单个数据列、筛选多个数据列、列表表达式方法、矩阵式下标方法
接口测试,
Pretraining Weekly Issue 56: Long Text Understanding, Instant Question Answering, Mask Self-Supervision
非科班毕业生,五面阿里:四轮技术面+HR一面已拿offer
mysql 查询一个字段为特定值,并且另一个字段的值出现两次的记录?
serialize 序列化原生方法
MySQL:锁机制 |表级锁、行级锁 | 排它锁、共享锁 | 间隙锁
6.【opencv鼠标回调事件】
Code Casual Recording Notes_Dynamic Programming_322 Change Exchange
itk中图像2d-3d配准整理
win32&mfc————win32菜单栏&库
路由器——交换机——网络交换机:区别
OrderedDict构建函数模块的不常见写法
项目动态|Apache Pulsar 2.10.1 版本介绍