awk命令
一.介绍
awk是专门为文本处理设计的编程语言,是一门数据驱动的编程语言。与sed类似,都是以数据驱动的行处理软件,主要用于数据扫描,过滤和汇总。数据可以来自于标准输入,管道或者文件。
二.语法
awk是一种处理文本文件的编程语言,文件的每行数据都被称为记录。默认以空格或者制表符为分隔符,每条记录被分成了若干字段(列)。awk每次从文件中取出一条记录。
格式:
awk [选项] '条件{动作} 条件{动作} ... ... ' 文件名
三.变量
awk语法由一系列条件和动作组成,在花括号内可以有多个动作,多个动作之间用分号分隔。在多个条件和动作之间可以有多个空格。
如果没有指定条件则匹配所有数据,如果没有指定动作,则默认为print打印动作。
3.1 常用内置变量:
- FILENAME:当前输入文档名称。
- FNR:当前输入文档的当前行号,尤其是在有多个输入文档时有用。
- NR:输入数据流的当前行号。
- $0:当前行的全部内容。
- $n:当前行第n个字段的内容。(n >= 1)
- NF:当前记录(行)的字段(列)个数。
- FS:字段分隔符,默认为空格或者Tab制表符。
- OFS:输出字段的分隔符,默认为空格。
- ORS:输出记录分隔符,默认为换行符\n。
- RS:输入记录分隔符,默认为换行符\n。

同样时输出行号,NR是将所有文件的数据视作一个数据流,而FNR是将多个文件的数据s视为独立的若干个数据流,遇到新文件时行号从1开始递增。
3.2 自定义变量

3.3 调用系统变量

3.4 自定义分隔符
awk默认使用空格,换行符,制表符作为分隔符,可以使用'-F'自定义分隔符。

3.5 内置变量RS,OFS,ORS
- RS
内置变量RS保存的是输入数据的行分隔符,默认为'\n',可以指定其他符号作为分隔符。

- OFS
保存输出列的分隔符(列分隔符),默认为空格。输出后每一列的分隔符。输出以设置的OFS作为分隔符。


- ORS
保存输出行的分隔符。默认是'\n'

3.6 print指令
可以输出常量与变量,如果是字符串常量需要用双引号括起来,数字常量可以直接打印。

3.7 条件匹配
awk支持使用正则进行模糊匹配,也支持字符串和数字的精确匹配,也支持逻辑与和逻辑或。

使用:






3.8 BEGIN和END
BEGIN导致动作指令仅在读取任何数据记录前执行一次,END导致动作指令仅在读取完所有数据记录后执行一次。
BEGIN可以进行数据初始化,END可以进行数据汇总。



3.9 数值计算

awk中的变量不需要定义就可以直接使用,未定义的字符为空,未定义数值,值为0。

3.10 循环计数
遇到符合条件的记录,进行动作。


四.条件判断语句
if后面如果只跟一个动作指令,则花括号{}可以省略,如果if后面的指令为多条则需要使用花括号{}括起来,多个指令使用分号分隔。
4.1 单分支语句
语法:
if(判断条件){动作指令;... ...}

4.2 双分支语句
语法:
if(判断条件){动作指令;... ...}else{动作指令;... ...}
统计系统用户个数和普通用户个数
![]()
4.3 多分支语句
语法:
if(条件1){动作指令;... ...}else if(条件2){动作指令;... ...}else{动作指令;... ...}
五.数组与循环

5.1 循环
语法:
for(变量 in 数值名){动作指令}
遍历数组:
变量是索引,数组[变量]是值。

成员关系判断:

5.2 for循环
语法:
for(表达式1;表达式2;表达式3){动作指令;... ...}
统计/etc/passwd中root出现次数。里面包含两层循环。第一层隐藏循环,awk遍历每一记录(行),显示循环遍历每一行的每一列。

5.3 while循环
语法:
while(条件){动作指令;... ...}
示例:

5.3 循环中断语句
与shell一样,awk提供了break,continue和exit语句,作用相同。

详细: awk命令详解_运维@小兵的博客-CSDN博客_awk
相关文章:
awk命令
一.介绍 awk是专门为文本处理设计的编程语言,是一门数据驱动的编程语言。与sed类似,都是以数据驱动的行处理软件,主要用于数据扫描,过滤和汇总。数据可以来自于标准输入,管道或者文件。 二.语法 awk是一种处理文本文件…...
LocalDateTime获取时间的年、月、日、时、分、秒、纳秒
如何把String/Date转成LocalDateTime参考String、Date与LocalDate、LocalTime、LocalDateTime之间互转 String、Date、LocalDateTime、Calendar与时间戳之间互相转化参考String、Date、LocalDateTime、Calendar与时间戳之间互相转化 方法介绍 getYear() 获取日期的年 getMon…...
MoveIT Rviz和Gazebo联合仿真
文章目录环境安装概述ros_control框架ros_control数据流文件配置附加工具故障问题解决参考接前两篇:ROS MoveIT1(Noetic)安装总结 Solidworks导出为URDF用于MoveIT总结(带prismatic) MoveIT1 Assistant 总结 环境 Ubu…...
ESP32S2(12K)-DS18B20数码管显示温度
一、物料清单: NODEMCU-32-S2 (ESP32-12K)四段数码管(共阴)DS18B20(VCC/DQ/GND)Arduino-IDE 2.0.3二、实现方法及效果图: 2.1 引用库 // #include <OneWire.h> //可以不引入,因为DallasTemperature.h中已经引入了OneWire.h #include <DallasTemperature.h>#…...
linux栈溢出定位
一、编译选项定位堆栈溢出 来源:堆栈溢出检测机制 - SkrSky - 博客园 1、栈溢出可能打印 unhandled level 1 translation fault (11) at 0x7f8d0347, esr 0x92000005 2、栈溢出保护机制 gcc提供了栈保护机制stack-protector(编译选项-fstack-protec…...
CSS基础:选择器和声明样式
CSS概念 CSS(Cascading Style Sheets)层叠样式表,又叫级联样式表,简称样式表 CSS用于HTML文档中元素样式的定义 使用css让网页具有美观一致的页面 语法 CSS 规则由两个主要的部分构成:选择器和声明样式 选择器通常…...
VS中安装gismo库
文章目录前言一、下载安装paraview直接下载压缩包安装就可以了解压后按步骤安装即可二、gismo库的安装gismo库网址第一种方法:第二种方法第三种方法:用Cmake软件直接安装首先下载cmake软件[网址](https://cmake.org/download/)安装gismo库三、gismo库的使…...
元学习方法解决CDFSL以及两篇SOTA论文讲解
来源:投稿 作者:橡皮 编辑:学姐 带你学习跨域小样本系列1-简介篇 跨域小样本系列2-常用数据集与任务设定详解 跨域小样本系列3:元学习方法解决CDFSL以及两篇SOTA论文讲解(本篇) 跨域小样本系列4…...
大数据之------------数据中台
一、什么是数据中台 **数据中台是指通过数据技术,对海量数据进行采集、计算、存储、加工,同时统一标准和口径。**数据中台的目标是让数据持续用起来,通过数据中台提供的工具、方法和运行机制,把数据变为一种服务能力,…...
Python 中 字符串是什么?
字符串是 Python 中最常用的数据类型。我们可以使用引号 ( ’ 或 " ) 来创建字符串。 创建字符串很简单,只要为变量分配一个值即可。例如: var1 ‘Hello World!’ var2 “Python Runoob” Python 访问字符串中的值 Python 不支持单字符类型&…...
OJ刷题Day1 · 一维数组的动态和 · 将数字变成 0 的操作次数 · 最富有的客户资产总量 · Fizz Buzz · 链表的中间结点 · 赎金信
一、一维数组的动态和二、将数字变成 0 的操作次数三、最富有的客户资产总量四、Fizz Buzz五、链表的中间结点六、赎金信一、一维数组的动态和 给你一个数组 nums 。数组「动态和」的计算公式为:runningSum[i] sum(nums[0]…nums[i]) 。 请返回 nums 的动态和。 示…...
【数据结构】栈——必做题
逆波兰表达式后缀表达式的出现是为了方便计算机处理,它的运算符是按照一定的顺序出现,所以求值过程中并不需要使用括号来指定运算顺序,也不需要考虑运算符号(比如加减乘除)的优先级。先介绍中简单的人工转化方法&#…...
LearnOpenGL 笔记 - 入门 04 你好,三角形
系列文章目录 LearnOpenGL 笔记 - 入门 01 OpenGLLearnOpenGL 笔记 - 入门 02 创建窗口LearnOpenGL 笔记 - 入门 03 你好,窗口 文章目录系列文章目录前言你好,三角形顶点输入顶点着色器(Vertex Shader)编译着色器片段着色器&…...
keepalived+mysql高可用
一.设置mysql同步信息两节点安装msyql略#配置节点11.配置权限允许远程访问mysql -u root -p grant all on *.* to root% identified by Root1212# with grant option; flush privileges;2.修改my.cnf#作为主节点配置(节点1)#作为主节点配置 server-id 1 …...
JAVA工具篇--1 Idea中 Gradle的使用
前言: 既然我们已经使用Maven 来完成对项目的构建,为什么还要使用Gradle 进行项目的构建;gradle和maven都可以作为java程序的构建工具,但两者还是有很大的不同之处的:1.可扩展性,gradle比较灵活,…...
弄懂自定义 Hooks 不难,改变开发认知有点不习惯
前言 我之前总结逻辑重用的时候,就一直在思考一个问题。 对于逻辑复用,render props 和 高阶组件都可以实现,同样官方说 Hooks 也可以实现,且还是在不增加额外的组件的情况下。 但是我在项目代码中,没有找到自定义 …...
Java面向对象基础
文章目录面向对象类注意事项内存机制构造器this关键字封装javabean格式成员变量和局部变量区别static静态关键字使用成员方法使用场景内存机制注意事项static应用:工具类static应用:代码块静态代码块实例代码块(用的比较少)static…...
基于python下selenium库实现交互式图片保存操作(批量保存浏览器中的图片)
Selenium是最广泛使用的开源Web UI(用户界面)自动化测试套件之一,可以通过编程与浏览量的交互式操作对网页进行自动化控制。基于这种操作进行数据保存操作,尤其是在图像数据的批量保存上占据优势。本博文基于selenium 与jupyterla…...
一:Datart的下载、本地运行
前言:本文只是个人在使用datart的一个记录,仅供参考。如果有不一样的地方,欢迎评论或私信进行交流。datart 是新一代数据可视化开放平台,支持各类企业数据可视化场景需求,如创建和使用报表、仪表板和大屏,进…...
Docker-compose
一.Docker-compose概述Docker-Compose项目是Docker官方的开源项目,负责实现对Docker容器集群的快速编排。Docker-Compose将所管理的容器分为三层,分别是 工程(project),服务(service)以及容器&a…...
AWS Lambda性能调优终极指南:如何通过内存配置平衡成本与执行速度
AWS Lambda性能调优终极指南:如何通过内存配置平衡成本与执行速度 【免费下载链接】aws-lambda-power-tuning AWS Lambda Power Tuning is an open-source tool that can help you visualize and fine-tune the memory/power configuration of Lambda functions. It…...
Apache Weex UI手势操作组件:滑动删除与拖拽交互终极指南
Apache Weex UI手势操作组件:滑动删除与拖拽交互终极指南 Apache Weex UI 是一个基于 Vue.js 的跨平台 UI 框架,专门用于构建高性能移动应用。其中,手势操作组件是提升用户体验的关键功能,让应用交互更加自然流畅。😊 …...
5分钟搞定!AI股票分析师daily_stock_analysis镜像一键启动与使用教程
5分钟搞定!AI股票分析师daily_stock_analysis镜像一键启动与使用教程 1. 引言 想体验AI帮你分析股票,但又担心数据隐私和复杂的配置流程?今天介绍的这款AI股票分析师镜像,完美解决了这两个痛点。它基于Ollama框架,将…...
PP-DocLayoutV3高算力适配:FP16推理开启后显存降低30%,精度损失<0.5%
PP-DocLayoutV3高算力适配:FP16推理开启后显存降低30%,精度损失<0.5% 文档版面分析是智能文档处理流程中的关键一环,它负责从一张图片中识别出哪里是标题、哪里是正文、哪里是表格或图片。这就像是给文档拍一张X光片,把它的“…...
ChatTTS 自定义样本实战:如何高效构建个性化语音合成模型
最近在做一个需要个性化语音合成的项目,用到了ChatTTS。说实话,直接拿官方流程走自定义样本训练,那个效率真是让人有点头疼。数据准备繁琐,训练时间长,出来的效果还不一定稳定。经过一番折腾和优化,总算总结…...
企业网络改造不求人:手把手教你深信服防火墙旁挂部署(含NQA配置避坑指南)
企业级防火墙旁挂部署实战:深信服设备零基础配置指南 当企业网络规模逐步扩大,业务系统日益复杂,网络安全防护往往成为IT运维团队最头疼的问题之一。传统防火墙部署通常需要对现有网络架构进行大规模调整,不仅实施周期长ÿ…...
Python-docx实战:如何用run对象精细控制Word文档样式(附完整代码示例)
Python-docx实战:用run对象精细控制Word文档样式的专业指南 在自动化办公和批量文档生成领域,Python-docx库已经成为处理Word文档的事实标准工具。对于需要生成合同、报告、发票等标准化文档的开发者而言,仅仅创建基础文本远远不够——精确控…...
嵌入式软件开发相关的硬件知识及技能
对于嵌入式软件开发工程师来说,硬件知识并非要求达到硬件工程师那样的设计深度,而是更侧重于理解、交互与协同。掌握必要的硬件知识,能让你写出更稳定、更高效的代码,并在软硬件联调时快速定位问题。以下从几个核心层面详述所需掌…...
BeepBox音乐创作终极指南:零基础在线制作器乐旋律
BeepBox音乐创作终极指南:零基础在线制作器乐旋律 【免费下载链接】beepbox An online tool for sketching and sharing instrumental melodies. 项目地址: https://gitcode.com/gh_mirrors/be/beepbox 你是否曾经想过创作属于自己的音乐,却因为复…...
模型轻量化前沿:OpenClaw集成百川2-13B-4bits量化版的技术解析
模型轻量化前沿:OpenClaw集成百川2-13B-4bits量化版的技术解析 1. 为什么我们需要量化模型? 当我第一次尝试在本地部署百川2-13B模型时,16GB显存的显卡直接被"撑爆"。这让我意识到,想要在消费级硬件上运行大模型&…...
