文本三剑客正则表达式3

news2024/9/21 2:45:01

文章目录

  • 文本三剑客&正则表达式3
    • 1 awk工作原理
    • 2 awk的基本格式及其内置变量
      • 2.1 基本格式
      • 2.2 内置变量
      • 2.3 示例
        • 2.3.1 直接打印所有内容
        • 2.3.2 取每一行的第一列
        • 2.3.3 打印行号,及所有内容
        • 2.3.4 打印第三行
        • 2.3.5 打印2-4行
        • 2.3.6 打印第2行和第4行
        • 2.3.7 用正则表达式打印2-4行
        • 2.3.8 打印偶数行
        • 2.3.9 打印奇数行
    • 3 awk的运算
      • 3.1 算100+200的和
      • 3.2 求3的2次方
    • 4 getline
      • 4.1 getline的工作过程
      • 4.2 示例
        • 4.2.1 打印偶数行
        • 4.2.2 打印奇数行
        • 4.2.3 把test1的内容传给函数getline,getline获取后把他打印出来并传给test
        • 4.2.4 把ls的结果传给函数getline后,赋值给变量line,并把line的值打印出来
    • 5 文本内容匹配过滤打印
      • 5.1 打印出以root开头的
      • 5.2 打印出以bash结尾的
    • 6 BEIGIN模式指定BEGIN打印模式
      • 6.1 处理过程
    • 7 对字段进行处理打印
      • 7.1 以:为分隔符,打印第一列
      • 7.2 -v的用法:变量赋值
        • 7.2.1 将输入的时候的分隔符:改成+输出,打印第一列和第三列
        • 7.2.2 以:为分隔符,换行输出
      • 7.3 BEIGIN模式指定打印内容
      • 7.4 条件判断打印
        • 7.4.1 如果第三列uid大于500,打印出来
        • 7.4.2 如果第三列uid不大于500,打印出来
    • 8 awk的三元表达式与精准筛选用法
      • 8.1 输出第七个字段包含“bash”所在行的第一个字段和最后一个字段
      • 8.2 输出第七个字段不包含“nologin”所在行的第一个字段和最后一个字段
      • 8.3 输出第六个字段为/home/qiao,第七个字段为/bin/bash的这些行的第一列和最后一列
      • 8.4 指定输出的分隔符
    • 9 数组
      • 9.1 定义数组打印
      • 9.2 awk中的数组形成遍历,在awk中打印变量不需要加$
      • 9.3 数组去重
      • 9.4 索引号是文本里面的内容,对索引号进行计数

文本三剑客&正则表达式3

1 awk工作原理

  • sed命令常用于一整行的处理

    • 而awk比较**倾向于将一行分成多个“字段”**然后再进行处理
      • 且默认情况下字段的分隔符为空格或 tab 键
  • awk 执行结果可以通过 print 的功能将字段数据打印显示

2 awk的基本格式及其内置变量

2.1 基本格式

awk 选项 '模式或条件 {操作}' 文件1 文件2...
  • F “分隔符”

    • 指明输入时用到的字段分隔符,默认的分隔符是若干个连续空白符
  • v(小v) var=value 变量赋值

注意一定是单引号

‘模式或条件 {操作}’

{ }外指定条件,{ }内指定操作

逗号指定连续的行、用 || 指定不连续的行、**&&**表示”且“


2.2 内置变量

内建变量,不能用双引号括起来,不然系统会把它当成字符串

内置变量意义
$0当前处理的行的整行内容
$n当前处理行的第n个字段(第n列)
NR当前处理的行的行号(序数)
NF当前处理的行的字段个数,##$NF代表最后一个字段
FS指定每行文本的字段分隔符,输入内容的分隔符 默认为空格或制表位。与"-F"作用相同 用-F可以不加单引号 -F:,用FS必须用=“”
OFS输出内容的列分隔符
FILENAME被处理的文件名
RS行分隔符

2.3 示例

2.3.1 直接打印所有内容

在这里插入图片描述
在这里插入图片描述

2.3.2 取每一行的第一列

在这里插入图片描述

2.3.3 打印行号,及所有内容

在这里插入图片描述

2.3.4 打印第三行

在这里插入图片描述

2.3.5 打印2-4行

在这里插入图片描述

2.3.6 打印第2行和第4行

在这里插入图片描述

2.3.7 用正则表达式打印2-4行

在这里插入图片描述

2.3.8 打印偶数行

在这里插入图片描述

2.3.9 打印奇数行

在这里插入图片描述

3 awk的运算

可以进行小数和整数的运算

还能进行幂的计算

3.1 算100+200的和

在这里插入图片描述

3.2 求3的2次方

在这里插入图片描述


4 getline

4.1 getline的工作过程

  • 当getline左右**无重定向符号(“<”)或者管道符号(“|”)**时

    • awk首先读取的是第一行,
    • 而getline获取的是光标跳转至下一行的内容(也就是第二行)
  • 当getline左右有管道符号或重定向符

    • getline则作用定向输入文件,由于文件是刚打开,并没有被awk读入一行,而只是getline读入,所以getline返回的是文件的第一行,而不是跳转至一行输入

原因:getline运行之后awk会改变NF,NR,$0,FNR等内部变量,所以此时读取$0的行号不再为1,而是2

4.2 示例

4.2.1 打印偶数行

在这里插入图片描述

4.2.2 打印奇数行

在这里插入图片描述

4.2.3 把test1的内容传给函数getline,getline获取后把他打印出来并传给test

在这里插入图片描述

4.2.4 把ls的结果传给函数getline后,赋值给变量line,并把line的值打印出来

在这里插入图片描述


5 文本内容匹配过滤打印

5.1 打印出以root开头的

在这里插入图片描述

5.2 打印出以bash结尾的

在这里插入图片描述


6 BEIGIN模式指定BEGIN打印模式

格式:awk 'BEGIN{...};{...};END{...}' 文件

6.1 处理过程

  1. 在awk处理指定的文本之前,需要先执行BEGIN{…}模式里的命令操作

  2. 中间的**{…} 是真正用于处理文件的命令操作**

  3. 在awk处理完文件后才会执行END{…}模式里的命令操作。END{ }语句块中,往往会放入打印结果等语句。

x的变量范围是根据文本中内容的行数来的

在这里插入图片描述

7 对字段进行处理打印

7.1 以:为分隔符,打印第一列

7.2 -v的用法:变量赋值

7.2.1 将输入的时候的分隔符:改成+输出,打印第一列和第三列

在这里插入图片描述

7.2.2 以:为分隔符,换行输出

#默认就是换行输出,不需要改

在这里插入图片描述

7.3 BEIGIN模式指定打印内容

以:为分隔符打印第一列

在这里插入图片描述

7.4 条件判断打印

7.4.1 如果第三列uid大于500,打印出来

在这里插入图片描述

7.4.2 如果第三列uid不大于500,打印出来

在这里插入图片描述


8 awk的三元表达式与精准筛选用法

awk的三元表达式继承了java的用法,格式与Java相似

格式:awk '(条件表达式)?(A表达式或者值):(B表达式或者值)'

以:为分隔符,如果$3大于$4,则打印$3,否则打印$4
在这里插入图片描述

awk的精准筛选

$n(> < ==): 用于对比数值

$n~"字符串": 代表第n个字段包含某个字符串

$n!~"字符串": 代表第n个字段不包含某个字符串

$n=="字符串": 代表第n个字段为某个字符串

$n!="字符串": 代表第n个字段不为某个字符串

$NF: 代表最后一个字段

8.1 输出第七个字段包含“bash”所在行的第一个字段和最后一个字段

在这里插入图片描述

8.2 输出第七个字段不包含“nologin”所在行的第一个字段和最后一个字段

在这里插入图片描述

8.3 输出第六个字段为/home/qiao,第七个字段为/bin/bash的这些行的第一列和最后一列

在这里插入图片描述

8.4 指定输出的分隔符

  • OFS:输出内容的列分隔符( n = n= n=n用于激活,否则不生效,n必须存在)

  • 对于输出时改变分隔符,我们常用到tr,awk,它们都可以实现在输出内容改变原本的分隔符
    在这里插入图片描述
    在这里插入图片描述

9 数组

9.1 定义数组打印

在这里插入图片描述

9.2 awk中的数组形成遍历,在awk中打印变量不需要加$

在这里插入图片描述

9.3 数组去重

  1. 索引号可以是数字,字符

  2. 统计索引号出现的次数

  3. 遍历行数

9.4 索引号是文本里面的内容,对索引号进行计数

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/547883.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

面试面麻了,别再难为测试人了····

去面试吧 面不被录用的试 面hr为了完成任务的试 面一轮二轮没有下文试 面需要通勤2小时的试 面随时加班的试 ...... 今年的“金三银四”被网友们称为“铜三铁四”&#xff0c;招聘软件上的岗位都能背下来了&#xff0c;简历却依然石沉大海。 好不容易等来个回复&#xff0c;还不…

手写西瓜书bp神经网络 mnist10 c#版本

本文根据西瓜书第五章中给出的公式编写&#xff0c;书中给出了全连接神经网络的实现逻辑&#xff0c;本文在此基础上编写了Mnist10手写10个数字的案例&#xff0c;网上也有一些其他手写的例子参考。demo使用unity进行编写&#xff0c;方便且易于查错。 该案例仅作为学习&#x…

Linux网络——shell编程之免交互

Linux网络——shell编程之shell编程之免交互 一、概述1.常用的交互程序&#xff1a;2.语法格式&#xff1a; 二、Here Document常规用法1.read 命令的读取2.wc -l 的内容行数统计3.passwd用户密码的修改4.cat 查看内容并输出到文件中5.cat 查看交互内容并输出到新的文件中6.交互…

【计算机系统基础4】程序的机器级表示

4.程序的机器级表示 4.1&#xff08;&#x1f3eb; CMU补充 &#xff09;x86-64 Linux 寄存器使用 %rax 返回值调用函数保存可以通过程序修改 rdi&#xff0c;…&#xff0c;%r9 传入参数&#xff08;arguments&#xff09;调用函数保存可通过程序进行修改 %r10&#xff0c;%…

【网络协议详解】——VLAN技术(学习笔记)

目录 &#x1f552; 1. VLAN介绍&#x1f558; 1.1 目标&#x1f558; 1.2 帧格式&#x1f558; 1.3 划分方式&#x1f558; 1.4 链路&#x1f558; 1.5 端口模式&#x1f564; 1.5.1 接入端口&#x1f564; 1.5.2 干道端口&#x1f564; 1.5.3 混合端口&#xff08;仅华为交换…

信息收集-端口

&#xff08;一&#xff09;端口号 端口号&#xff0c;是指在Internet传输控制协议&#xff08;TCP&#xff09;或用户数据报协议&#xff08;UDP&#xff09;中&#xff0c;用于标识具体应用程序与计算机之间通信的端口号码 互联网上有许多使用TCP和UDP协议进行通信的应用程…

【网络协议详解】——STP技术(学习笔记)

目录 &#x1f552; 1. STP技术工作原理&#x1f552; 2. BPDU报文&#x1f558; 2.1 配置BPDU&#x1f558; 2.2 TCN BPDU &#x1f552; 3. 实验&#xff1a;了解STP生成过程 &#x1f552; 1. STP技术工作原理 以太网交换机使用生成树协议STP&#xff08;Spanning Tree Pro…

连续签到积分兑换试用流量主小程序开发

每日签到积分兑换试用流量主小程序开发 打卡兑奖小程序。用户签到活得积分。积分可以兑换商品。观看激励视频广告可以积分翻倍。 用户可以参加试用商品活动参加试用需要提交信息。可以通过分享方式直接获取试用资格。 以下是流量主小程序的功能列表&#xff1a; 广告位管理&a…

JavaWeb——HTTP 协议的基本格式和 fiddler 的用法

目录 一、HTTP定义 二、HTTP协议的工作流程 三、抓包工具Fiddler的用法 1、介绍 2、原理 3、抓包结果 &#xff08;1&#xff09;、HTTP请求 &#xff08;2&#xff09;、HTTP响应 四、HTTP协议的格式 1、HTTP请求 &#xff08;1&#xff09;、请求行 &#xff08;2…

OpenAPI的签名校验

前言 作为一个后端开发&#xff0c;提供API接口或者对接第三方API接口的时候&#xff0c;考虑接口的防刷、重放等安全问题&#xff0c;严格意义上&#xff0c;都需要加上双方约定的签名规则。 大致思路 一般情况下&#xff0c;签名规则没有墨守成规的规定&#xff0c;只要考…

MediaPipe Face Detection可运行在移动设备上的亚毫秒级人脸检测

MediaPipe人脸检测 MediaPipe人脸检测是一种超快速的人脸检测解决方案,具有6个界标和多人脸支持。它基于BlazeFace,BlazeFace是为移动GPU推理量身定制的轻巧且性能良好的面部检测器。检测器的超实时性能使其可应用于需要准确地关注面部区域作为其他任务特定模型: 例如 1、3…

如何有效解决企业文件安全事件频发问题?

企业文件安全是企业必须解决的一个关键问题。随着数字化趋势的不断发展&#xff0c;企业严重依赖于以电子格式存储和访问数据。这种转变使得组织必须实施适当的安全协议&#xff0c;以确保其敏感数据免受未经授权的访问或盗窃。 企业网盘的使用已经在公司中流行起来&#xff0c…

ChatGPT:3. 使用OpenAI创建自己的AI网站:2. 使用 flask web框架快速搭建网站主体

使用OpenAI创建自己的AI网站 如果你还是一个OpenAI的小白&#xff0c;有OpenAI的账号&#xff0c;但想调用OpenAI的API搞一些有意思的事&#xff0c;那么这一系列的教程将仔细的为你讲解如何使用OpenAI的API制作属于自己的AI网站。博主只能利用下班时间更新&#xff0c;进度慢…

mybatis是如何集成到spring的之SqlSessionFactoryBean

文章目录 1 前言1.1 集成spring前使用mybatis的方式1.2 集成mybatis到spring的关键步骤 2 SqlSessionFactoryBean对象分析2.1 buildSqlSessionFactory做了什么事情&#xff1f;2.2 为什么是SqlSessionFactoryBean却可以使用SqlSessionFactory&#xff1f; 3 验证demo4 举一反三…

【QT】自定义工程封装成DLL并如何调用(带ui界面的)

一、动态库的封装 1、首先新建一个Library工程 2、修改类型为共享库&#xff0c;自定义项目名称以及项目路径 3、选择编译器 4、选择动态库所需要的模块 5、自定义类名&#xff0c;点击下一步 6、点击下一步 7、项目总览 8、此时的文件中还没有ui文件&#xff0c;因为要封装带…

南京邮电大学算法与设计实验四:回溯法(最全最新,与题目要求一致)

要求用回溯法求解8-皇后问题&#xff0c;使放置在8*8棋盘上的8个皇后彼此不受攻击&#xff0c;即&#xff1a;任何两个皇后都不在同一行、同一列或同一斜线上。请输出8皇后问题的所有可行解。 用回溯法编写一个递归程序解决如下装载问题&#xff1a;有n个集装箱要装上2艘载重分…

pg事务:隔离级别(2)

事务隔离级别的历史 ANSI SQL-92定义的隔离级别和异常现象确实对数据库行业影响深远&#xff0c;甚至30年后的今天&#xff0c;绝大部分工程师对事务隔离级别的概念还停留在此&#xff0c;甚至很多真实的数据库隔离级别实现也停留在此。但后ANSI92时代对事物隔离有许多讨论甚至…

【5.20】五、安全测试——渗透测试

目录 5.3 渗透测试 5.3.1 什么是渗透测试 5.3.2 渗透测试的流程 5.3 渗透测试 5.3.1 什么是渗透测试 渗透测试是利用模拟黑客攻击的方式&#xff0c;评估计算机网络系统安全性能的一种方法。这个过程是站在攻击者角度对系统的任何弱点、技术缺陷或漏洞进行主动分析&#x…

如何在项目管理中实现任务活动的留痕管理?

项目工作为什么需要留痕呢? 1&#xff0c;记录项目工作&#xff1a;在项目管理工作中常常涉及多部门协作&#xff0c;工作留痕可以帮助我们有效复原已经发生了的工作活动&#xff0c;从而留下印迹供日后查证。 2&#xff0c;支撑工作复盘&#xff1a;在项目工作结束之后&…

SpringBoot程序启动速度提速分析

传统的破程序&#xff08;百万行级一个微服务&#xff09;&#xff0c;在我的P15-gen2代电脑上启动一次需要80秒左右(直接运行三次&#xff0c;取平均值&#xff09;&#xff0c;在其它人电脑上可想而知了。 大概记录几点 1 优化肯定是需要找工具观察的&#xff0c;不观测还…