当前位置:网站首页>Shell脚本文本三剑客之awk
Shell脚本文本三剑客之awk
2022-07-27 11:01:00 【不回头的蛙兄】
目录
1 awk工具介绍
- AWK 是一种处理文本文件的语言,是一个强大的文本分析工具
- 可以在无交互的模式下实现复杂的文本操作
- 相较于sed常作用于一整个行的处理,awk则比较倾向于一行当中分成数个字段来处理,因为awk相当适合小型的文本数据。
1.1 工作原理
当读到第一行时,匹配条件,然后执行指定动作,再接着读取第二行数据处理,不会默认输出。如果没有定义匹配条件默认是匹配所有数据行,awk隐含循环,条件匹配多少次动作就会执行多少次。
逐行读取文本,默认以空格或tab键为分隔符进行分隔,将分隔所得的各个字段保存到内建变量中,并按模式或者条件执行编辑命令。
sed命令常用于一整行的处理,而awk比较倾向于将一行分成多个"字段"然后再进行处理。awk信息的读入也是逐行读取的,执行结果可以通过print的功能将字段数据打印显示。
在使用awk命令的过程中,可以使用逻辑操作符“&&”表示“与”、“||”表示“或”、“!”表示“非”;还可以进行简单的数学运算,如+、-、*、/、%、^分别表示加、减、乘、除、取余和乘方。
命令格式:
- awk [选项] ‘模式条件{操作}’ 文件1 文件2...
- awk -f|-v 脚本文件 文件1 文件.....
1.2 awk常见的内建变量(可直接用)
- FS∶ 列分割符。指定每行文本的字段分隔符,默认为空格或制表位。与"-F"作用相同
- NF∶ 当前处理的行的字段个数。
- NR∶ 当前处理的行的行号(序数)。
- $0∶当前处理的行的整行内容。
- $n∶ 当前处理行的第n个字段(第n列)。
- FILENAME∶ 被处理的文件名。
- RS∶ 行分隔符。awk从文件上读取资料时,将根据RS的定义把资料切割成许多条记录,而awk一次仅读入一条记录,以进行处理。预设值是’\n’。简说为:数据记录分隔,默认为\n,即每行为一条记录
2 实例
2.1 打印文本内容
例










扩展生产:网卡的ip、流量

2.2 awk的运算
逐行执行开始之前执行什么任务,结束之后再执行什么任务,用BEGIN、END
BEGIN一般用来做初始化操作,仅在读取数据记录之前执行一次
END一般用来做汇总操作,仅在读取完数据记录之后执行一次

例


2.2.1模糊匹配,用~表示包含,!~表示不包含


2.2.2 关于数值与字符串的比较
比较符号:== != <= >= < >

2.2.3 逻辑运算 &&(与)、||(或)


2.2.4 其他内置变量的用法
- FS:输入字段的分隔符 默认是空格
- OFS:输出字段的分隔符 默认也是空格
- NR∶ 当前处理的行的行号(序数)
- FNR:读取文件的记录数(行号),从1开始,新的文件重新重1开始计数
- RS:输入行分隔符 默认为换行符
- ORS:输出行分隔符 默认也是为换行符
例




3 awk高级用法

调用函数getline,读取一行数据的时候并不是得到当前行而是当前行的下一行




边栏推荐
- LeetCode 01: T1. 两数之和 ; T1108. IP 地址无效化 ; T344. 反转字符串
- 【Unity入门计划】CreatorKitFPS:第一人称射击3D小游戏
- 哈希表 详细讲解
- Detailed explanation of hash table
- zabbix自定义监控项
- C programming language (2nd Edition) -- Reading Notes -- 1.5
- Markdown editor syntax - setting of text color, size, font and background color (Reprint)
- 剑指 Offer 笔记: T57 - I. 和为 s 的两个数字
- N ¨UWA: Visual Synthesis Pre-training for Neural visUal World creAtionChenfei
- CH340模块无法识别/烧写不进的一种可能性
猜你喜欢
随机推荐
日本福岛废堆安全监视协议会认可排海计划“安全”
C programming language (2nd Edition) -- Reading Notes -- 1.4
C programming language (2nd Edition) -- Reading Notes -- 1.5
Maker Hongmeng application development training notes 02
Common power supply problems and solutions of Arduino
SQL statement learning and the use of pymysql
Synchronous use reference of the new version of data warehouse (for beginners)
C programming language (2nd Edition) -- Reading Notes -- 1.5.1
数据库 cli 工具 docker 镜像
Keil MDK编译出现..\USER\stm32f10x.h(428): error: #67: expected a “}“错误的解决办法
Detailed explanation of hash table
Redis simple to use
Solution of digital tube flash back after proteus8 professional version cracking
torch‘ has no attribute ‘inference_mode‘
【机器学习-白板推导系列】学习笔记---支持向量机和主成分分析法
剑指 Offer 笔记: T57 - I. 和为 s 的两个数字
Maker Hongmeng application development training notes 03
Stm32f10x -- C Language-1
Firewalld防火墙
LeetCode 02: 剑指 Offer 58 - I. 翻转单词顺序(简单); T123. 验证回文串 ; T9. 回文数








