当前位置:网站首页>Shell:三剑客之awk
Shell:三剑客之awk
2022-08-11 05:36:00 【人间若有一两风】
一、awk的概述
awk:Aho, Weinberger, Kernighan,报告生成器,格式化文本输出,GNU/Linux发布的AWK目前由自由软件基金会(FSF)进行开发和维护,通常也称它为 GNU AWK
有多种版本:
AWK:原先来源于 AT & T 实验室的的AWK
NAWK:New awk,AT & T 实验室的AWK的升级版
GAWK:即GNU AWK。所有的GNU/Linux发布版都自带GAWK,它与AWK和NAWK完全兼容
二、工作原理和格式
1、工作原理
- 当读到第一行时,匹配条件,然后执行指定动作,再接着读取第二行数据处理,不会默认输出
- 如果没有定义匹配条件默认是匹配所有数据行,awk隐含循环,条件匹配多少次动作就会执行多少次
逐行读取文本,默认以空格或tab键为分隔符进行分隔,将分隔所得的各个字段保存到内建变量中,并按模式或者条件执行编辑命令。
- sed命令常用于一整行的处理,而awk比较倾向于将一行分成多个""字段"然后再进行处理。
- awk信息的读入也是逐行读取的,执行结果可以通过print的功能将字段数据打印显示。
- 在使用awk命令的过程中,可以使用逻辑操作符"
&&“表示"与”、“||表示"或”、"!“表示非”;还可以进行简单的数学运算,如+、一、*、/、%、^分别表示加、减、乘、除、取余和乘方。
显示一个空格,空格需要用双引号引起来,如果不用引号默认以变量看待,如果是常量就需要双引号引起来
2、awk格式
格式:
awk [选项] ‘模式条件{操作}’ 文件1 文件2....
awk -f|-v 脚本文件 文件1 文件2.....
3、awk内置变量
FS:输入字段分隔符,默认为空格或制表位(tab)
OFS:输出字段的分割符(默认是空格)
RS:输入行分隔符
ORS:输出行的分割符,默认为换行符
NF:当前处理的行的字段个数
NR:当前处理的行的行号(序数)
FNR:读取文件的记录行号(从1开始,若读取新的文件依旧是从1开始)
$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}' //输出文件偶数行
边栏推荐
猜你喜欢
随机推荐
Find the shops that have sold more than 1,000 yuan per day for more than 30 consecutive days in the past six months
下一代 无线局域网--强健性
拼多多API接口大全
daily sql - query for managers and elections with at least 5 subordinates
Amazon API interface Daquan
HCIA knowledge review
Open Set Domain Adaptation 开集领域适应
矩阵分析——微分、积分、极限
numpy和tensor增加或删除一个维度
淘宝API接口参考
【预约观看】Ambire 智能钱包 AMA 活动第四期即将举行
抖音API接口
My meeting of the OA project (meeting seating & review)
Douyin share password url API tool
损失函数——负对数似然
《Show and Tell: A Neural Image Caption Generator》论文解读
Amazon Get AMAZON Product Details API Return Value Description
OA项目之项目简介&会议发布
Resolved EROR 1064 (42000): You have an error in. your SOL syntax. check the manual that corresponds to yo
会议OA项目之我的会议