正则表达式 —— Awk
Awk
awk:文本三剑客之一,是功能最强大的文本工具
awk也是按行来进行操作,对行操作完之后,可以根据指定命令来对行取列
awk的分隔符,默认分隔符是空格或tab键,多个空格会压缩成一个
awk的用法
awk的格式:awk 选项 '模式或条件{操作}' 文件 在awk中操作默认就是打印
模式或条件:这么干 操作:操作结果 文件:操作的对象
例:打印第一列
awk '{print $1}' test.txt
$0打印全部内容
awk '{print $1,$2,$3}' test.txt
常用选项:
-F:指定分隔符,如果是空格,不需要加
-v:变量赋值(用的少)
awk常用的内置变量:
$0:打印所有的内容
$n(n为数字):处理行的第n列
NR:处理行的行号
NF:处理当前行的字段个数 $NF:表示最后一个字段
FS:列分隔符,指定文本的分隔符,和F作用一致 格式 FS=":"
不常用的:OFS输出文本的分隔符
RS:行分隔符,指定分隔符为回车
除了内置变量$n,其他的内置变量不用加$,不能用引号,也不能用括号,否则会被当成字符串处理
awk的打印功能:
awk '{print}' test.txt 打印所有,默认就是1
awk '0{print}' 什么都不打印
awk '{print NR}' test.txt 只打印行号
awk '{print NR,$0}' test.txt 既显示行号也显示内容
指定打印第三行 awk 'NR==3{print}' test.txt
打印第二行到第四行 awk 'NR==2,NR==4{print}' test.txt
奇偶打印:awk 'NR%2==0{print}' test.txt 打印偶数行
awk 'NR%2==1{print}' test.txt 打印奇数行
awk的运算功能:awk 'BEGIN{print 10+20}'
也支持小数运算 3**2或3^2 求幂即次方
面试题:awk的内置函数:getline
1、如果getline左右没有重定向符号(>,<) 或者没有管道符是,awk会先读第一行,但是如果加了getline,会跳过第一行,去读第二行
例:awk '{getline;print}' test.txt 只打印第二行和第四行,跳过了第一行和第三行
相当于打印奇数行
2、如果两边有重定向或管道符,getline作用于定向输入文件
例:awk '{getline < "test1.txt";print > "test2.txt"}' test1.txt
先从test1获取test1的内容输入到test2,作用对象为test1
3、管道符
例:ls | awk '{getline ky30;print $0,ky30;}'
ky30为自定义变量
ls输出的结果传给ky30,打印ls命令的输出结果
如果没有结果,打印空,不做如何操作
awk作为文本过滤进行打印
打印以root开头的 awk '/^root/{print}' test.txt
BEGIN模式更复杂的操作
awk 'BEGIN{..};{..};END{..}' 文件
在对文件进行操作之前,会先执行BEGIN{..}模式条件或命令操作
中间的{..}是真正的用于处理文件的命令
END{..}结束语句,一般都是打印执行结果
面试题:如何通过awk获取文件里有多少行
awk 'BEGIN{i=0};{i+1};END{print i}' test.txt
意思为test.txt有多少行就打印多少次
了解即可:-v 变量赋值,指的是改变分隔符
例:把分隔符:换成@
awk -v FS=":" -v OFS="2" '{print $1,$3}' /etc/passwd
awk的条件判断打印:
awk -F:'$3>10{print}' /etc/passwd | head -n 15 把passwd第三列大于10的全打印出来
取反 awk -F: '($4<10){print}' /etc/passwd | head -n 15 把第四列除了大于10的都打印出来
awk支持条件判断语句
awk -F:'{if ($3=10) {print}}' /etc/passwd 打印第三列等于10的内容
三元表达式:类似于JAVA 面试会问
格式:awk '(条件表达式)?(A表达式或值):(B表达式或值)'
?相当于if :相当于else
例:awk -F:'{i=($3>$4)?$3:$4;{print;}' /etc/passwd
如果满足第三列大于第四列就打印第三列,不满足就打印第四列
awk的精确筛选:>,<,= 比较数值
比较字符串:
$n~ "字符串":表示第n个字段包含某个字符串
$n!~ "字符串":表示不包含某个字符
$n== "字符串":表示第n个字符串就是某个字符
$n!= "字符串":表示不是某个字符串的选出来
$NF:表示最后一个字段
例:awk -F:'$7~"bash" {print $1,$NF}' /etc/passwd
打印第七个字段包含bash的第一例和最后一列
awk -F:'$7~"nologin" {print $1,$3}' /etc/passwd
第七个字段不是nologin,打印第一和第三个字段
awk -F:'($6=="home/dn")&&($7=="/bin/bash"){print $1,$NF}'
指定第六个字段为/home/dn 而且第七个字段是/bin/bash
&&相当于而且
awk -F:'($3!=0)||($4>10) {print $1}' /etc/passwd
所有第三列不是0或者第四列大于10的结果,打印第一列
awk结合数组来进行使用
在awk中怎么来定义数组
awk 'BEGIN{a[0]=10;a[1]=20;a[2]=30;for(i in a)print i , a[i]}'
取的是a的索引 i in的是a的索引 0,1,2是a的索引
去重统计
awk '{a[$1]++};END{for(i in a)}{print i,a[i]}' test.txt
面
提取host.txt主机名后再放回host.txt文件
awk -F '[ .]+' '{print $2}' ms.txt
相关文章:
正则表达式 —— Awk
Awk awk:文本三剑客之一,是功能最强大的文本工具 awk也是按行来进行操作,对行操作完之后,可以根据指定命令来对行取列 awk的分隔符,默认分隔符是空格或tab键,多个空格会压缩成一个 awk的用法 awk的格式…...
国芯新作 | 四核Cortex-A53@1.4GHz,仅168元起?含税?哇!!!
创龙科技SOM-TLT507是一款基于全志科技T507-H处理器设计的4核ARM Cortex-A53全国产工业核心板,主频高达1.416GHz。核心板CPU、ROM、RAM、电源、晶振等所有元器件均采用国产工业级方案,国产化率100%。 核心板通过邮票孔连接方式引出MIPI CSI、HDMI OUT、…...
【MyBatis】 框架原理
目录 10.3【MyBatis】 框架原理 10.3.1 【MyBatis】 整体架构 10.3.2 【MyBatis】 运行原理 10.4 【MyBatis】 核心组件的生命周期 10.4.1 SqlSessionFactoryBuilder 10.4.2 SqlSessionFactory 10.4.3 SqlSession 10.4.4 Mapper Instances 与 Hibernate 框架相比&#…...
三、线性工作流
再生产的各个环节,正确使用gamma编码及gamma解码,使得最终得到的颜色数据与最初输入的物理数据一致。如果使用gamma空间的贴图,在传给着色器前需要从gamma空间转到线性空间。 如果不在线性空间下进行渲染,会产生的问题:…...
2023华数杯数学建模A题思路 - 隔热材料的结构优化控制研究
# 1 赛题 A 题 隔热材料的结构优化控制研究 新型隔热材料 A 具有优良的隔热特性,在航天、军工、石化、建筑、交通等 高科技领域中有着广泛的应用。 目前,由单根隔热材料 A 纤维编织成的织物,其热导率可以直接测出;但是 单根隔热…...
Zabbix分布式监控Web监控
目录 1 概述2 配置 Web 场景2.1 配置步骤2.2 显示 3 Web 场景步骤3.1 创建新的 Web 场景。3.2 定义场景的步骤3.3 保存配置完成的Web 监控场景。 4 Zabbix-Get的使用 1 概述 您可以使用 Zabbix 对多个网站进行可用性方面监控: 要使用 Web 监控,您需要定…...
PHP从入门到精通—PHP开发入门-PHP概述、PHP开发环境搭建、PHP开发环境搭建、第一个PHP程序、PHP开发流程
每开始学习一门语言,都要了解这门语言和进行开发环境的搭建。同样,学生开始PHP学习之前,首先要了解这门语言的历史、语言优势等内容以及了解开发环境的搭建。 PHP概述 认识PHP PHP最初是由Rasmus Lerdorf于1994年为了维护个人网页而编写的一…...
【LeetCode-中等】722. 删除注释
题目链接 722. 删除注释 标签 字符串 步骤 Step1. 先将source合并为一个字符串进行处理,中间补上’\n’,方便后续确定注释开始、结束位置。 string combined; for (auto str : source) {combined str "\n"; }Step2. 定义数组 toDel&am…...
rust里如何判断字符串是否相等呢?
在 Rust 中,有几种方法可以判断字符串是否相等。下面是其中几种常见的方法: 使用 运算符:可以直接使用 运算符比较两个字符串是否相等。例如: fn main() {let str1 "hello";let str2 "world";if str1 …...
python基本知识学习
一、输出语句 在控制台输出Hello,World! print("Hello,World!") 二、注释 单行注释:以#开头 # print("你好") 多行注释: 选中要注释的代码Ctrl/三单引号三双引号 # print("你好") # a1 # a2 print("Hello,World!&…...
vue3和typescript_组件
1 components下新建myComponent.vue 2 页面中引入组件,传入值,并且绑定事件函数。 3...
Qt+联想电脑管家
1.自定义按钮类 效果: (1)仅当未选中,未悬浮时 (2)其他三种情况,均如图 #ifndef BTN_H #define BTN_H#include <QPushButton> class btn : public QPushButton {Q_OBJECT public:btn(QWidget * parent nullptr);void set_normal_icon(…...
论文阅读-BotPercent: Estimating Twitter Bot Populations from Groups to Crowds
目录 摘要 引言 方法 数据集 BotPercent架构 实验结果 活跃用户中的Bot数量 Bot Population among Comment Sections Bot Participation in Content Moderation Votes Bot Population in Different Countries’ Politics 论文链接:https://arxiv.org/pdf/23…...
用于永磁同步电机驱动器的自适应SDRE非线性无传感器速度控制(MatlabSimulink实现)
💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…...
Spring Cloud+Spring Boot+Mybatis+uniapp+前后端分离实现知识付费平台免费搭建 qt
Java版知识付费源码 Spring CloudSpring BootMybatisuniapp前后端分离实现知识付费平台 提供职业教育、企业培训、知识付费系统搭建服务。系统功能包含:录播课、直播课、题库、营销、公司组织架构、员工入职培训等。 提供私有化部署,免费售…...
删除注释(力扣)
删除注释 题目 给一个 C 程序,删除程序中的注释。这个程序source是一个数组,其中source[i]表示第 i 行源码。 这表示每行源码由 ‘\n’ 分隔。 在 C 中有两种注释风格,行内注释和块注释。 字符串// 表示行注释,表示//和其右侧…...
阿里云AK创建
要在阿里云上创建 Access Key(AK),您需要按照以下步骤进行操作: 登录到阿里云控制台([https://www.aliyun.com/?utm_contentse_1014243503))。 点击右上方的主账号,点击“AccessKey管理”。 …...
OC与Swift的相互调用
OC调用Swift方法 1、在 Build Settings 搜索 Packaging ,设置 Defines Module 为 YES 2、新建 LottieBridge.swift 文件,自动生成桥 ProductName-Bridging-Header.h 3、在 LottieBridge.swift 中,定义Swift类继承于OC类,声明 obj…...
某银行软件测试笔试题
(时间90分钟,满分100分) 考试要求:计算机相关专业试题 一、填空题(每空1分,共10分) 1. ______验证___是保证软件正确实现特定功能的一系列活动和过程。 2. 按开发阶段分,软件测试可…...
SpringMVC概述、SpringMVC的工作流程、创建SpringMVC的项目
🐌个人主页: 🐌 叶落闲庭 💨我的专栏:💨 c语言 数据结构 javaweb 石可破也,而不可夺坚;丹可磨也,而不可夺赤。 Spring MVC入门 一、Spring MVC概述二、入门案例2.1导入Sp…...
XML Group端口详解
在XML数据映射过程中,经常需要对数据进行分组聚合操作。例如,当处理包含多个物料明细的XML文件时,可能需要将相同物料号的明细归为一组,或对相同物料号的数量进行求和计算。传统实现方式通常需要编写脚本代码,增加了开…...
MPNet:旋转机械轻量化故障诊断模型详解python代码复现
目录 一、问题背景与挑战 二、MPNet核心架构 2.1 多分支特征融合模块(MBFM) 2.2 残差注意力金字塔模块(RAPM) 2.2.1 空间金字塔注意力(SPA) 2.2.2 金字塔残差块(PRBlock) 2.3 分类器设计 三、关键技术突破 3.1 多尺度特征融合 3.2 轻量化设计策略 3.3 抗噪声…...
论文解读:交大港大上海AI Lab开源论文 | 宇树机器人多姿态起立控制强化学习框架(二)
HoST框架核心实现方法详解 - 论文深度解读(第二部分) 《Learning Humanoid Standing-up Control across Diverse Postures》 系列文章: 论文深度解读 + 算法与代码分析(二) 作者机构: 上海AI Lab, 上海交通大学, 香港大学, 浙江大学, 香港中文大学 论文主题: 人形机器人…...
智慧工地云平台源码,基于微服务架构+Java+Spring Cloud +UniApp +MySql
智慧工地管理云平台系统,智慧工地全套源码,java版智慧工地源码,支持PC端、大屏端、移动端。 智慧工地聚焦建筑行业的市场需求,提供“平台网络终端”的整体解决方案,提供劳务管理、视频管理、智能监测、绿色施工、安全管…...
2025 后端自学UNIAPP【项目实战:旅游项目】6、我的收藏页面
代码框架视图 1、先添加一个获取收藏景点的列表请求 【在文件my_api.js文件中添加】 // 引入公共的请求封装 import http from ./my_http.js// 登录接口(适配服务端返回 Token) export const login async (code, avatar) > {const res await http…...
第一篇:Agent2Agent (A2A) 协议——协作式人工智能的黎明
AI 领域的快速发展正在催生一个新时代,智能代理(agents)不再是孤立的个体,而是能够像一个数字团队一样协作。然而,当前 AI 生态系统的碎片化阻碍了这一愿景的实现,导致了“AI 巴别塔问题”——不同代理之间…...
【单片机期末】单片机系统设计
主要内容:系统状态机,系统时基,系统需求分析,系统构建,系统状态流图 一、题目要求 二、绘制系统状态流图 题目:根据上述描述绘制系统状态流图,注明状态转移条件及方向。 三、利用定时器产生时…...
Robots.txt 文件
什么是robots.txt? robots.txt 是一个位于网站根目录下的文本文件(如:https://example.com/robots.txt),它用于指导网络爬虫(如搜索引擎的蜘蛛程序)如何抓取该网站的内容。这个文件遵循 Robots…...
OpenPrompt 和直接对提示词的嵌入向量进行训练有什么区别
OpenPrompt 和直接对提示词的嵌入向量进行训练有什么区别 直接训练提示词嵌入向量的核心区别 您提到的代码: prompt_embedding = initial_embedding.clone().requires_grad_(True) optimizer = torch.optim.Adam([prompt_embedding...
企业如何增强终端安全?
在数字化转型加速的今天,企业的业务运行越来越依赖于终端设备。从员工的笔记本电脑、智能手机,到工厂里的物联网设备、智能传感器,这些终端构成了企业与外部世界连接的 “神经末梢”。然而,随着远程办公的常态化和设备接入的爆炸式…...
