当前位置:网站首页>Shell编程三剑客之awk
Shell编程三剑客之awk
2022-08-10 04:53:00 【眼下一颗柠檬】
一、awk 工具
在Linux系统中,awk是一个功能强大的编辑工具,逐行读取输入文本,并根据指定的匹配模式进行查找,对符合条件的内容进行格式化输出或者过滤处理,可以在无交互的情况下实现相当复杂的文本操作,被广泛应用于Shell 脚本,完成各种自动化配置任务
1.awk工作原理
当读到第一行时,匹配条件,然后执行指定动作,再接着读取第二行数据处理,不会默认输出
如果没有定义匹配条件默认时匹配所有数据行,awk隐含循环,条件匹配多少次就会执行多少次
逐行读取文本,默认以空格或tab键为分隔符进行分隔,将分隔所得的各个字段保存到内建变量中,并按模式或者条件执行编辑命令
2.awk命令格式
命令格式
awk 选项 '模式或条件 {操作}' 文件1 文件2 ...
awk -f |-v 脚本文件 文件1 文件2 ...
3.awk内建变量
awk包含几个特殊的内建变量(可直接用)
FS:指定每行文本的字段分隔符,默认为空格或制表位
OFS:输出字段的分隔符
RS:输出行分隔符
ORS:输出行的分隔符,默认为换行符
NF:当前处理的行的字段个数
NR:当前处理的行的行号(序数)
$0:当前处理的行的整行内容
$n:当前处理行的第n个字段(第n列)
FILENAME:被处理的文件名
4.awk命令的用法
awk '{print}' passwd.bak //输出所有内容,{print}与{print $0}等同

awk 'NR==1,NR==3{print}' passwd.bak //输出1-3行的内容

awk '/^root/{print}' passwd.bak //输出以root开头的行

cat -n passwd.bak |awk '(NR%2==1){print}' //输出文件的奇数行

cat -n passwd.bak |awk '(NR%2==0){print}' //输出文件偶数行

cat passwd.bak |awk -F: '{print $1}' //指定:为分隔符,打印第一列

实例
1.提取字段中的IP地址和时间

2.提取主机名

3.提取以下字段中的版本号

边栏推荐
- JavsSE => 多态
- 2022 R2 transportable pressure vessel filling operation examination question bank simulation platform
- 剑指Offer 033.变位数组
- 解决“File has been changed outside the editor, reload?”提示
- 【无标题】
- 125. 耍杂技的牛
- Flutter开发:报错The following assertion was thrown resolving an image codec:Unable to…的解决方法
- 【bug】尝试重新启动事Deadlock found when trying to get lock; try restarting transaction
- 阿笑家的黄桃
- 智能锁控板的主要功能有哪些?如何使用?
猜你喜欢
随机推荐
抽象问题方法论
若依系统前后台漏洞大全
LeetCode 301. Remove Invalid Parentheses BFS
Ueditor编辑器任意文件上传漏洞
【论文笔记】Prototypical Contrast Adaptation for Domain Adaptive Semantic Segmentation
Rpc接口压测
社区分享|货拉拉通过JumpServer纳管大规模云上资产
PAC文件解释-转载 小胡子哥的个人网站
What is the relationship between legal representative and shareholders?
X书6.89版本shield-unidbg调用方式
深度学习之-01
十年架构五年生活-06 离职的冲动
ctf-pikachu-file_inclusion
众昂矿业:萤石下游需求强劲
网络层与数据链路层
咨询cdc 2.0 for mysql不执行flush with read lock.怎么保证bin
ZZULIOJ:1026: 字符类型判断
60行从零开始自己动手写FutureTask是什么体验?
如何成为一名合格的 DBA?看看“老油条”们怎么说
Thread.sleep, Thread.yield 作用解释









