当前位置: 首页 > news >正文

正则表达式 —— 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&#xff1a;文本三剑客之一&#xff0c;是功能最强大的文本工具 awk也是按行来进行操作&#xff0c;对行操作完之后&#xff0c;可以根据指定命令来对行取列 awk的分隔符&#xff0c;默认分隔符是空格或tab键&#xff0c;多个空格会压缩成一个 awk的用法 awk的格式…...

国芯新作 | 四核Cortex-A53@1.4GHz,仅168元起?含税?哇!!!

创龙科技SOM-TLT507是一款基于全志科技T507-H处理器设计的4核ARM Cortex-A53全国产工业核心板&#xff0c;主频高达1.416GHz。核心板CPU、ROM、RAM、电源、晶振等所有元器件均采用国产工业级方案&#xff0c;国产化率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 框架相比&#…...

三、线性工作流

再生产的各个环节&#xff0c;正确使用gamma编码及gamma解码&#xff0c;使得最终得到的颜色数据与最初输入的物理数据一致。如果使用gamma空间的贴图&#xff0c;在传给着色器前需要从gamma空间转到线性空间。 如果不在线性空间下进行渲染&#xff0c;会产生的问题&#xff1a…...

2023华数杯数学建模A题思路 - 隔热材料的结构优化控制研究

# 1 赛题 A 题 隔热材料的结构优化控制研究 新型隔热材料 A 具有优良的隔热特性&#xff0c;在航天、军工、石化、建筑、交通等 高科技领域中有着广泛的应用。 目前&#xff0c;由单根隔热材料 A 纤维编织成的织物&#xff0c;其热导率可以直接测出&#xff1b;但是 单根隔热…...

Zabbix分布式监控Web监控

目录 1 概述2 配置 Web 场景2.1 配置步骤2.2 显示 3 Web 场景步骤3.1 创建新的 Web 场景。3.2 定义场景的步骤3.3 保存配置完成的Web 监控场景。 4 Zabbix-Get的使用 1 概述 您可以使用 Zabbix 对多个网站进行可用性方面监控&#xff1a; 要使用 Web 监控&#xff0c;您需要定…...

PHP从入门到精通—PHP开发入门-PHP概述、PHP开发环境搭建、PHP开发环境搭建、第一个PHP程序、PHP开发流程

每开始学习一门语言&#xff0c;都要了解这门语言和进行开发环境的搭建。同样&#xff0c;学生开始PHP学习之前&#xff0c;首先要了解这门语言的历史、语言优势等内容以及了解开发环境的搭建。 PHP概述 认识PHP PHP最初是由Rasmus Lerdorf于1994年为了维护个人网页而编写的一…...

【LeetCode-中等】722. 删除注释

题目链接 722. 删除注释 标签 字符串 步骤 Step1. 先将source合并为一个字符串进行处理&#xff0c;中间补上’\n’&#xff0c;方便后续确定注释开始、结束位置。 string combined; for (auto str : source) {combined str "\n"; }Step2. 定义数组 toDel&am…...

rust里如何判断字符串是否相等呢?

在 Rust 中&#xff0c;有几种方法可以判断字符串是否相等。下面是其中几种常见的方法&#xff1a; 使用 运算符&#xff1a;可以直接使用 运算符比较两个字符串是否相等。例如&#xff1a; fn main() {let str1 "hello";let str2 "world";if str1 …...

python基本知识学习

一、输出语句 在控制台输出Hello,World! print("Hello,World!") 二、注释 单行注释&#xff1a;以#开头 # print("你好") 多行注释&#xff1a; 选中要注释的代码Ctrl/三单引号三双引号 # print("你好") # a1 # a2 print("Hello,World!&…...

vue3和typescript_组件

1 components下新建myComponent.vue 2 页面中引入组件&#xff0c;传入值&#xff0c;并且绑定事件函数。 3...

Qt+联想电脑管家

1.自定义按钮类 效果&#xff1a; (1)仅当未选中&#xff0c;未悬浮时 (2)其他三种情况&#xff0c;均如图 #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 论文链接&#xff1a;https://arxiv.org/pdf/23…...

用于永磁同步电机驱动器的自适应SDRE非线性无传感器速度控制(MatlabSimulink实现)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…...

Spring Cloud+Spring Boot+Mybatis+uniapp+前后端分离实现知识付费平台免费搭建 qt

&#xfeff;Java版知识付费源码 Spring CloudSpring BootMybatisuniapp前后端分离实现知识付费平台 提供职业教育、企业培训、知识付费系统搭建服务。系统功能包含&#xff1a;录播课、直播课、题库、营销、公司组织架构、员工入职培训等。 提供私有化部署&#xff0c;免费售…...

删除注释(力扣)

删除注释 题目 给一个 C 程序&#xff0c;删除程序中的注释。这个程序source是一个数组&#xff0c;其中source[i]表示第 i 行源码。 这表示每行源码由 ‘\n’ 分隔。 在 C 中有两种注释风格&#xff0c;行内注释和块注释。 字符串// 表示行注释&#xff0c;表示//和其右侧…...

阿里云AK创建

要在阿里云上创建 Access Key&#xff08;AK&#xff09;&#xff0c;您需要按照以下步骤进行操作&#xff1a; 登录到阿里云控制台&#xff08;[https://www.aliyun.com/?utm_contentse_1014243503)&#xff09;。 点击右上方的主账号&#xff0c;点击“AccessKey管理”。 …...

OC与Swift的相互调用

OC调用Swift方法 1、在 Build Settings 搜索 Packaging &#xff0c;设置 Defines Module 为 YES 2、新建 LottieBridge.swift 文件&#xff0c;自动生成桥 ProductName-Bridging-Header.h 3、在 LottieBridge.swift 中&#xff0c;定义Swift类继承于OC类&#xff0c;声明 obj…...

某银行软件测试笔试题

&#xff08;时间90分钟&#xff0c;满分100分&#xff09; 考试要求&#xff1a;计算机相关专业试题 一、填空题&#xff08;每空1分&#xff0c;共10分&#xff09; 1. ______验证___是保证软件正确实现特定功能的一系列活动和过程。 2. 按开发阶段分&#xff0c;软件测试可…...

SpringMVC概述、SpringMVC的工作流程、创建SpringMVC的项目

&#x1f40c;个人主页&#xff1a; &#x1f40c; 叶落闲庭 &#x1f4a8;我的专栏&#xff1a;&#x1f4a8; c语言 数据结构 javaweb 石可破也&#xff0c;而不可夺坚&#xff1b;丹可磨也&#xff0c;而不可夺赤。 Spring MVC入门 一、Spring MVC概述二、入门案例2.1导入Sp…...

装饰模式(Decorator Pattern)重构java邮件发奖系统实战

前言 现在我们有个如下的需求&#xff0c;设计一个邮件发奖的小系统&#xff0c; 需求 1.数据验证 → 2. 敏感信息加密 → 3. 日志记录 → 4. 实际发送邮件 装饰器模式&#xff08;Decorator Pattern&#xff09;允许向一个现有的对象添加新的功能&#xff0c;同时又不改变其…...

synchronized 学习

学习源&#xff1a; https://www.bilibili.com/video/BV1aJ411V763?spm_id_from333.788.videopod.episodes&vd_source32e1c41a9370911ab06d12fbc36c4ebc 1.应用场景 不超卖&#xff0c;也要考虑性能问题&#xff08;场景&#xff09; 2.常见面试问题&#xff1a; sync出…...

云计算——弹性云计算器(ECS)

弹性云服务器&#xff1a;ECS 概述 云计算重构了ICT系统&#xff0c;云计算平台厂商推出使得厂家能够主要关注应用管理而非平台管理的云平台&#xff0c;包含如下主要概念。 ECS&#xff08;Elastic Cloud Server&#xff09;&#xff1a;即弹性云服务器&#xff0c;是云计算…...

基于uniapp+WebSocket实现聊天对话、消息监听、消息推送、聊天室等功能,多端兼容

基于 ​UniApp + WebSocket​实现多端兼容的实时通讯系统,涵盖WebSocket连接建立、消息收发机制、多端兼容性配置、消息实时监听等功能,适配​微信小程序、H5、Android、iOS等终端 目录 技术选型分析WebSocket协议优势UniApp跨平台特性WebSocket 基础实现连接管理消息收发连接…...

Auto-Coder使用GPT-4o完成:在用TabPFN这个模型构建一个预测未来3天涨跌的分类任务

通过akshare库&#xff0c;获取股票数据&#xff0c;并生成TabPFN这个模型 可以识别、处理的格式&#xff0c;写一个完整的预处理示例&#xff0c;并构建一个预测未来 3 天股价涨跌的分类任务 用TabPFN这个模型构建一个预测未来 3 天股价涨跌的分类任务&#xff0c;进行预测并输…...

2025 后端自学UNIAPP【项目实战:旅游项目】6、我的收藏页面

代码框架视图 1、先添加一个获取收藏景点的列表请求 【在文件my_api.js文件中添加】 // 引入公共的请求封装 import http from ./my_http.js// 登录接口&#xff08;适配服务端返回 Token&#xff09; export const login async (code, avatar) > {const res await http…...

精益数据分析(97/126):邮件营销与用户参与度的关键指标优化指南

精益数据分析&#xff08;97/126&#xff09;&#xff1a;邮件营销与用户参与度的关键指标优化指南 在数字化营销时代&#xff0c;邮件列表效度、用户参与度和网站性能等指标往往决定着创业公司的增长成败。今天&#xff0c;我们将深入解析邮件打开率、网站可用性、页面参与时…...

HarmonyOS运动开发:如何用mpchart绘制运动配速图表

##鸿蒙核心技术##运动开发##Sensor Service Kit&#xff08;传感器服务&#xff09;# 前言 在运动类应用中&#xff0c;运动数据的可视化是提升用户体验的重要环节。通过直观的图表展示运动过程中的关键数据&#xff0c;如配速、距离、卡路里消耗等&#xff0c;用户可以更清晰…...

iOS性能调优实战:借助克魔(KeyMob)与常用工具深度洞察App瓶颈

在日常iOS开发过程中&#xff0c;性能问题往往是最令人头疼的一类Bug。尤其是在App上线前的压测阶段或是处理用户反馈的高发期&#xff0c;开发者往往需要面对卡顿、崩溃、能耗异常、日志混乱等一系列问题。这些问题表面上看似偶发&#xff0c;但背后往往隐藏着系统资源调度不当…...

基于SpringBoot在线拍卖系统的设计和实现

摘 要 随着社会的发展&#xff0c;社会的各行各业都在利用信息化时代的优势。计算机的优势和普及使得各种信息系统的开发成为必需。 在线拍卖系统&#xff0c;主要的模块包括管理员&#xff1b;首页、个人中心、用户管理、商品类型管理、拍卖商品管理、历史竞拍管理、竞拍订单…...