当前位置:网站首页>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.提取以下字段中的版本号
边栏推荐
猜你喜欢
随机推荐
webrtc学习--webrtc桌面采集
60行从零开始自己动手写FutureTask是什么体验?
2022 security officer C certificate test and simulation test in shandong province
JS gets the year, month, day, time, etc. of the current time
JS gets the year, month, day, time, etc. of the simple current time
[Web3 Series Development Tutorial - Create Your First NFT (7)] Create an NFT DApp and assign attributes to your NFT, such as pictures
如何成为一名合格的 DBA?看看“老油条”们怎么说
2022G3 Boiler Water Treatment Exam Mock 100 Questions and Mock Exam
线性模型中的高级特征选择技术——基于R
咨询cdc 2.0 for mysql不执行flush with read lock.怎么保证bin
Nexus_仓库类型
机器学习之聚类——双聚类简介及简单案例
LeetCode·301.删除无效的括号·BFS
社区分享|货拉拉通过JumpServer纳管大规模云上资产
C#【委托/事件篇】跨线程访问窗体控件的方法
leetcode每天5题-Day13
【无标题】
How to choose the right oscilloscope probe in different scenarios
深入学习Synchronized各种使用方法
Unity实现UI的边缘检测和拖拽拉伸功能