正则表达式 —— 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…...

日语AI面试高效通关秘籍:专业解读与青柚面试智能助攻
在如今就业市场竞争日益激烈的背景下,越来越多的求职者将目光投向了日本及中日双语岗位。但是,一场日语面试往往让许多人感到步履维艰。你是否也曾因为面试官抛出的“刁钻问题”而心生畏惧?面对生疏的日语交流环境,即便提前恶补了…...

Qt/C++开发监控GB28181系统/取流协议/同时支持udp/tcp被动/tcp主动
一、前言说明 在2011版本的gb28181协议中,拉取视频流只要求udp方式,从2016开始要求新增支持tcp被动和tcp主动两种方式,udp理论上会丢包的,所以实际使用过程可能会出现画面花屏的情况,而tcp肯定不丢包,起码…...

【人工智能】神经网络的优化器optimizer(二):Adagrad自适应学习率优化器
一.自适应梯度算法Adagrad概述 Adagrad(Adaptive Gradient Algorithm)是一种自适应学习率的优化算法,由Duchi等人在2011年提出。其核心思想是针对不同参数自动调整学习率,适合处理稀疏数据和不同参数梯度差异较大的场景。Adagrad通…...

解决Ubuntu22.04 VMware失败的问题 ubuntu入门之二十八
现象1 打开VMware失败 Ubuntu升级之后打开VMware上报需要安装vmmon和vmnet,点击确认后如下提示 最终上报fail 解决方法 内核升级导致,需要在新内核下重新下载编译安装 查看版本 $ vmware -v VMware Workstation 17.5.1 build-23298084$ lsb_release…...
基础测试工具使用经验
背景 vtune,perf, nsight system等基础测试工具,都是用过的,但是没有记录,都逐渐忘了。所以写这篇博客总结记录一下,只要以后发现新的用法,就记得来编辑补充一下 perf 比较基础的用法: 先改这…...

【配置 YOLOX 用于按目录分类的图片数据集】
现在的图标点选越来越多,如何一步解决,采用 YOLOX 目标检测模式则可以轻松解决 要在 YOLOX 中使用按目录分类的图片数据集(每个目录代表一个类别,目录下是该类别的所有图片),你需要进行以下配置步骤&#x…...

MySQL 8.0 OCP 英文题库解析(十三)
Oracle 为庆祝 MySQL 30 周年,截止到 2025.07.31 之前。所有人均可以免费考取原价245美元的MySQL OCP 认证。 从今天开始,将英文题库免费公布出来,并进行解析,帮助大家在一个月之内轻松通过OCP认证。 本期公布试题111~120 试题1…...

AI,如何重构理解、匹配与决策?
AI 时代,我们如何理解消费? 作者|王彬 封面|Unplash 人们通过信息理解世界。 曾几何时,PC 与移动互联网重塑了人们的购物路径:信息变得唾手可得,商品决策变得高度依赖内容。 但 AI 时代的来…...
Mysql8 忘记密码重置,以及问题解决
1.使用免密登录 找到配置MySQL文件,我的文件路径是/etc/mysql/my.cnf,有的人的是/etc/mysql/mysql.cnf 在里最后加入 skip-grant-tables重启MySQL服务 service mysql restartShutting down MySQL… SUCCESS! Starting MySQL… SUCCESS! 重启成功 2.登…...

iview框架主题色的应用
1.下载 less要使用3.0.0以下的版本 npm install less2.7.3 npm install less-loader4.0.52./src/config/theme.js文件 module.exports {yellow: {theme-color: #FDCE04},blue: {theme-color: #547CE7} }在sass中使用theme配置的颜色主题,无需引入,直接可…...