Linux awk命令详解

article/2025/9/16 22:26:17


Linux awk命令详解
一、awk
工作原理
逐行读取文本,默认以空格或tab键为分隔符进行分隔,将分隔所得的各个字段保存到内建变量中,并按模式或者条件执行编辑命令。

sed命令常用于一整行的处理,而awk比较倾向于将一行分成多个“字段”然后再进行处理。awk信息的读入也是逐行读取的,执行结果可以通过print的功能将字段数据打印显示。在使用awk命令的过程中,可以使用逻辑操作符“&&”表示“与”、“||”表示“或”、“!”表示“非”;还可以进行简单的数学运算,如+、-、*、/、%、^分别表示加、减、乘、除、取余和乘方。

命令格式
awk 选项 '模式或条件 {操作}' 文件 1 文件 2 …
awk -f 脚本文件 文件 1 文件 2 …
1
2
awk常见的内建变量(可直接用)如下所示
FS:列分割符。指定每行文本的字段分隔符,默认为空格或制表位。与"-F"作用相同
NF:当前处理的行的字段个数。
NR:当前处理的行的行号(序数)。
$0:当前处理的行的整行内容。
$n:当前处理行的第n个字段(第n列)。
FILENAME:被处理的文件名。
RS:行分隔符。awk从文件上读取资料时,将根据RS的定义把资料切割成许多条记录,而awk一次仅读入一条记录,以进行处理。预设值是’\n’
按行输出文本
awk '{print}' 1.txt                 #输出所有内容
awk '{print $0}' 1.txt            #输出所有内容

awk 'NR==1,NR==3{print}' 1.txt    #输出第 1~3 行内容
awk '(NR>=1)&&(NR<=3){print}' 1.txt    #输出第 1~3 行内容在这里插入图片描述

 


awk 'NR==1||NR==3{print}' testfile2        #输出第1行、第3行内容
在这里插入图片描述

 


awk '(NR%2)==1{print}' testfile2         #输出所有奇数行的内容
awk '(NR%2)==0{print}' testfile2        #输出所有偶数行的内容在这里插入图片描述

 


awk '/^root/{print}' /etc/passwd        #输出以 root 开头的行
awk '/nologin$/{print}' /etc/passwd        #输出以 nologin 结尾的行在这里插入图片描述

 


awk 'BEGIN {x=0};/\/bin\/bash$/{x++};END {print x}' /etc/passwd        #统计以/bin/bash 结尾的行数,等同于 grep -c "/bin/bash$"   /etc/passwd

BEGIN模式表示,在处理指定的文本之前,需要先执行BEGIN模式中指定的动作;awk再处理指定的文本,之后再执行END模式中指定的动作,END{}语句块中,往往会放入打印结果等语句

按字段输出文本
awk -F ":" '{print $3}' /etc/passwd         #输出每行中(以空格或制表位分隔)的第3个字段
在这里插入图片描述

 


awk -F ":" '{print $1,$3}' /etc/passwd        #输出每行中的第1、3个字段
在这里插入图片描述

 


awk -F ":" '$3<5{print $1,$3}' /etc/passwd    #输出第3个字段的值小于5的第1、3个字段内容
在这里插入图片描述

 


awk -F ":" '!($3<200){print}' /etc/passwd     #输出第3个字段的值不小于200的行
在这里插入图片描述

 


awk 'BEGIN {FS=":"};{if($3>=200){print}}' /etc/passwd    #先处理完BEGIN的内容,再打印文本里面的内容
在这里插入图片描述

 


awk -F ":" '{max=($3>$4)?$3:$4;{print max}}' /etc/passwd        #($3>$4)?$3:$4三元运算符,如果第3个字段的值大于第4个字段的值,则把第3个字段的值赋给max,否则第4个字段的值赋给max
在这里插入图片描述

 


awk -F ":" '{print NR,$0}' /etc/passwd        #输出每行内容和行号,每处理完一条记录,NR值加1
在这里插入图片描述

 


awk -F ":" '$7~"/bash"{print $1}' /etc/passwd    #输出以冒号分隔且第7个字段中包含/bash的行的第1个字段
在这里插入图片描述

 


awk -F ":" '($1~"root")&&(NF==7){print $1,$2}' /etc/passwd    #输出第1个字段中包含root且有7个字段的行的第1、2个字段

在这里插入图片描述

 


awk -F ":" '($7!="/bin/bash")&&($7!="/sbin/nologin"){print}' /etc/passwd    #输出第7个字段既不为/bin/bash,也不为/sbin/nologin的所有行

通过管道、双引号调用 Shell 命令
echo $PATH | awk 'BEGIN{RS=":"};END{print NR}'        #统计以冒号分隔的文本段落数,END{}语句块中,往往会放入打印结果等语句
在这里插入图片描述

 
awk -F: '/bash$/{print | "wc -l"}' /etc/passwd        #调用 wc -l 命令统计使用 bash 的用户个数,等同于 grep -c "bash$" /etc/passwd
1
free -m | awk '/Mem:/ {print int($3/($3+$4)*100)}'    #查看当前内存使用百分比

在这里插入图片描述

 


top -b -n 1 | grep Cpu | awk -F ',' '{print $4}' | awk '{print $1}'        #查看当前CPU空闲率,(-b -n 1 表示只需要1次的输出结果)
在这里插入图片描述

 


date -d "$(awk -F "." '{print $1}' /proc/uptime) second ago" +"%F %H:%M:%S"        #显示上次系统重启时间,等同于uptime;second ago为显示多少秒前的时间,+"%F %H:%M:%S"等同于+"%Y-%m-%d %H:%M:%S"的时间格式
在这里插入图片描述

 


awk 'BEGIN {while ("w" | getline) n++ ; {print n-2}"%"}'    #调用w命令,并用来统计在线用户数

在这里插入图片描述

 


当getline左右无重定向符“<”或“|”时,getline作用于当前文件,读入当前文件的第一行给其后跟的变量var或$0;应该注意到,由于awk在处理getline之前已经读入了一行,所以getline得到的返回结果是隔行的。
当getline左右有重定向符“<”或“|”时,getline则作用于定向输入文件,由于该文件是刚打开,并没有被awk读入一行,只是getline读入,那么getline返回的是该文件的第一行,而不是隔行。

seq 10 | awk '{print $0; getline}'   
seq 10 | awk '{getline; print $0}'

在这里插入图片描述

 


http://chatgpt.dhexx.cn/article/U4h75SED.shtml

相关文章

shell脚本——awk命令详解

每日分享&#xff1a; 也许你错过了今天的落日&#xff0c;但你可以去追逐下一个黎明&#xff01; 文章目录 一、awk1、工作原理2、格式3、常见的内建变量 二、awk命令使用——根据行输出内容输出所有内容输出指定行的内容输出奇数偶数行输出指定字符行的内容 三、awk命令使用—…

linux之awk详解

前言 awk不仅仅是Linux系统中的一个命令&#xff0c;而且其还是一种编程语言&#xff0c;可以用来处理数据和生成报告&#xff08;Excel&#xff09;。处理的数据可以是一个或多个文件&#xff0c;它是Linux系统最强大的文本处理工具&#xff0c;没有之一。 【语法格式】 aw…

Linux - awk命令详解

目录 1. awk命令 1.1 awk工作原理 1.2 awk语法 1.2.1 awk完整语法 示例&#xff1a; 1.2.1 awk工作流程 1.3 指定分隔符 1.3.1 -F 指定分隔符 1.3.2 指定输出分隔符 2. free命令 2.1 free命令各项含义 2.1.1 什么时候会使用交换分区&#xff1f; 2.1.2…

awk 命令详解

目录 一、awk概述 二、awk 工具原理 三、awk内置变量 四、awk用法示例 1、awk常用内置变量 2、BEGIN、END的用法 3、模糊匹配 4、数值与字符串的比较 5、逻辑运算&&和|| 6、其他内置变量的用法 7、awk高级用法 定义引用变量 awk通过管道符号、双引号调用she…

如何选择适合你的项目管理认证

前言 越来越多的小伙伴开始去考项目管理认证&#xff0c;目前互联网行业内主流的项目管理认证还是PMP的认证。 我想从几个方面来深度讲一讲项目管理认证的内容和价值&#xff0c;帮助大家做一个选择和辨别&#xff0c;避免在众多的项目管理认证中迷失了方向&#xff0c;一不小…

【敏捷方法落地之旅】-PMI_ACP敏捷认证交流会

会议名称&#xff1a;PMI_ACP敏捷认证交流会 会议时间&#xff1a;3月26日(星期六)14:00-16:30 会议举办具体地址&#xff1a;黄浦区成都北路500号峻岭广场16楼 票价&#xff1a;免费 参会规模(人数)&#xff1a;50 会议主办方&#xff1a;光环国际 一、会议简介 项目管…

CSM(Certified Scrum Master) 敏捷认证是什么?

Scrum 是用于开发和持续支持复杂产品的一个框架。Scrum 基于试验性过程控制理论&#xff0c;借鉴了精益思想、时间盒、模块化设计等&#xff0c;并完整地体现了敏捷宣言和敏捷原则。Scrum 采用一种迭代、增量式的方法来优化对未来的预测和管理风险&#xff0c;建立组织响应变化…

权威的国际敏捷认证Certified Scrum Master (CSM)

权威的国际敏捷认证Certified Scrum Master (CSM) A. 认证前 在学习Certified Scrum Master (CSM)之前,你需要了解: 什么是CSMCSM认证与其他敏捷认证有什么区别常见问题CSM培训课程大纲1. 什么是CSM 什么是Certified Scrum Master (CSM)2. Scrum国际敏捷认证 敏捷认证的对比…

PMI-ACP敏捷认证:敏捷开发的6个实战经验

敏捷开发,相对传统软件开发模式,它主要是针对快速变化的需求,不断优化管理流程,最终推出优质软件。 1. 快速迭代 相对那种半年一次的大版本发布来说,小版本的需求、开发和测试更加简单快速。一些公司,一年仅发布仅2~3 个版本,发布流程缓慢,它们仍采用瀑布开发模式,更严…

2021PMI-ACP®国际敏捷项目管理师认证招生简章

敏捷管理专业人士&#xff08;PMI-ACP&#xff09;认证要求敏捷培训、敏捷项目工作经验以及包含敏捷实践、工具、技巧考试的结合&#xff0c;结合了其他敏捷方法&#xff0c;包括SCRUM&#xff08;敏捷开发&#xff09;&#xff0c;XP&#xff08;极限编程&#xff09;和Lean D…

Scrum master敏捷认证全真试题截图PDF CSM敏捷认证考题真题题目试题2022年试题和答案下载

Scrum master敏捷认证全真试题截图PDF CSM敏捷认证考题真题题目试题2022年试题和答案下载 一、CSM敏捷认证简介 更多的介绍大家可以自行去百度搜索了解一下。 市面上的敏捷认证有两个&#xff1a; 一个是PMI的PMI-ACP认证&#xff1b; 一个是Scrum联盟的Certificated Scrum…

记一次CRM敏捷认证培训学习总结

前言 最近公司组织了一次关于CRM敏捷认证的培训和考试活动。为了加深记忆和留待以后回顾复习&#xff0c;也为了想要了解敏捷的同学提供一定的帮助&#xff0c;特此写了一篇关于敏捷培训的总结。 学习链接&#xff1a; Scrum指南2020版本下载地址&#xff1a;https://scrumgui…

敏捷认证_新敏捷–认证

敏捷认证 上次我们看情况如何。 事情如何在滑雪胜地的一群软件开发人员之间汇聚&#xff1a;在该领域进行了实际实验&#xff0c;并取得了成功。 有一个沟通渠道可以传播这些想法。 现在有了共同的愿景和名字。 除非肯施瓦伯 &#xff08; Ken Schwaber &#xff09;具有精明的…

C语言之#include用法详解

学习Linux C&#xff0c;必须要理解include&#xff0c;只要弄清以下几个问题&#xff0c;就能完全理解include了&#xff01; 1.#include 实质是什么&#xff1f; 预编译的时候copy include头文件的内容到当前行 &#xff08;疑问&#xff1a;预编译命令 $gcc -E test.c -o …

CMake中include的使用

CMake中的include命令用于从文件或模块(file or module)加载并运行CMake code。其格式如下&#xff1a; include(<file|module> [OPTIONAL] [RESULT_VARIABLE <var>][NO_POLICY_SCOPE]) 从给定的文件加载并运行CMake code。变量读写访问调用者的范围(Variable rea…

Makefile基础教学(include的使用方法)

文章目录 前言一、include在makefile中的概念介绍二、include使用示例三、include中需要注意的一些操作1. 在include前加-选项2. include触发规则创建了文件会发生什么3. include包含的文件夹存在 总结 前言 本篇文章将讲解include的使用方法&#xff0c;在C语言中使用include…

django urls include用法

在Django框架中&#xff0c;提供了非常清晰简洁的url管理方法&#xff0c;在新建一个project之后(此处为myproject),然后在项目中建立一个app(此处为myapp)&#xff0c;会看到有如下的目录结构&#xff1a; 一般所熟知的就是在myproject/myproject/urls.py中的urlpatterns列表中…

#include的使用方法

include的作用&#xff1a; #include叫做“文件包含” / include 语句包含并运行指定文件。 功能&#xff1a;它的功能是用来指定文件的全部内容替换程序中的命令行&#xff0c;从而使指定的文件与当前源文件连成一个源文件 书写格式&#xff1a; #include <文件名> …

移位密码及其python实现

就当为CSDN这方面的python开源做点贡献哈哈哈 移位密码 算法原理 ​ python代码 #移位密码 class ShiftCipher:global dddict(zip(.join(chr(i) for i in range(97,123)),list(range(0,26))))#字母表def __init__(self,k:int):self.kk;#k为移位数def encrypt(self,m:str):#加…