当前位置:网站首页>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结尾
边栏推荐
- Harvard University smashes the field: DALL-E 2 is just a "glue monster", and the generation accuracy rate is only 22%
- 2022年8月7日 暑假第四周总结
- 【Rust—LeetCode题解】1.两数之和
- 年初离职,学习半年源码,终于拿到了蚂蚁Offer,分享面试过程
- Pretraining Weekly Issue 56: Long Text Understanding, Instant Question Answering, Mask Self-Supervision
- 基于Nodejs的医生预约平台的设计和实现
- 一桩事先张扬的网红书店倒闭案
- 接口测试,
- KD-SCFNet:通过知识蒸馏实现更准确、更高效的显着目标检测(ECCV2022)
- MapStruct入门使用
猜你喜欢
浅学一下二叉树链式存储结构的遍历
华为云云数据库RDS MySQL 版初试探【华为云至简致远】
win32&mfc————win32菜单栏&库
【os.path】的相关用法(持更)
机器学习+深度学习笔记(持续更新~)
LeetCode简单题之统计星号
基于Nodejs的医生预约平台的设计和实现
Pretraining Weekly Issue 56: Long Text Understanding, Instant Question Answering, Mask Self-Supervision
OpenInfra Days China 2022 |StreamNative 翟佳、刘德志受邀分享
【Redis】位图以及位图的使用场景(统计在线人数和用户在线状态)
随机推荐
《预训练周刊》第56期:长文本理解、即时问答、掩码自监督
【索引】图神经论文之GCN(持更)
你是什么时候对深度学习失去信心的?
bzoj 3624 [Apio2008]免费道路
2022年8月7日 暑假第四周总结
基于FPGA的FIR滤波器的实现(1)—采用fir1函数设计
R语言ggplot2可视化:使用ggpubr包的ggbarplot函数可视化堆叠的柱状图(stacked bar plot)、palette参数自定义不同水平柱状图边框以及填充的颜色
KD-SCFNet: More Accurate and Efficient Salient Object Detection Through Knowledge Distillation (ECCV2022)
[Redis] Redis installation and use of client redis-cli (batch operation)
MySQL:锁机制 |表级锁、行级锁 | 排它锁、共享锁 | 间隙锁
更改默认打开应用程序设置
Verilog HDL Bits training 09 grammar foundation
华为云云数据库RDS MySQL 版初试探【华为云至简致远】
HackTheBox | Previse
腾讯,投了个 “离诺贝尔奖最近的华人”
R语言ggplot2可视化:使用ggpubr包的ggdonutchart函数可视化甜甜圈图(donut chart)、为甜甜圈图添加自定义标签(包含文本内容以及数值百分比)、lab.font参数设置标
PC端实用软件推荐
Qt的简易日志库实现及封装
textarea 禁止拖拽
难产的“第一股”:中式快餐之困