文本三剑客之grep

目录

一、正则表达式

1、什么是正则表达式

2、元字符

 3、扩展正则表达式元字符

二、grep


一、正则表达式

1、什么是正则表达式

REGEXP: Regular Expressions,由一类特殊字符及文本字符所编写的模式,其中有些字符(元字符)不表示字符字面意义,而表示控制或通配的功能,类似于增强版的通配符功能,但与通配符不同,通配符功能是用来处理文件名,而正则表达式是处理文本内容中字符。

正则表达式被很多程序和开发语言所广泛支持:vim, less,grep,sed,awk, nginx,mysql 等

  • 正则表达式,又称正规表达式、常规表达式
  • 使用字符串来描述、匹配一系列符合某个规则的字符串

正则表达式组成

  • 普通字符包括大小写字母、数字、标点符号及一些其他符号。
  • 元字符是指在正则表达式中具有特殊意义的专用字符

可以使用

man 7 regex

可以使用man手册帮助

2、元字符

--- 基础正则表达式常见元字符

(支持的工具:grep、egrep、sed、awk)

字符作用
\

转义,把一些特殊的符号转换成普通的符号字符,还可以把一些普通字符转换成特殊功能,例:\!、\n、\$等

^

表示匹配字符串开始的位置,匹配行首,例: ^a、 ^#
$表示匹配字符串末尾的位置,匹配行尾,例: word$、 #$ ;^$表示空行

.

匹配任意的单个字符,例: go.d、g..d
*匹配前面子表达式0次或者多次,贪婪模式所以尽可能长,例: goo*d、go.*d
.*表示任意长度的任一字符,不包括0次
\?

匹配其前面字符0或1次,可有可无

\+匹配其前面字符最少1次,有且大于等于1次

\{n\}

匹配前面的子表达式n次,例:mo\{2\}y、'[0-9]\{ 2\ }'匹配两位及两位以上数字
\{n,\}匹配前面的子表达式不少于n次,例: mo\{2,\}y、'[0-9]\{2,\}'匹配两位及两位以上数字
\{,n\}匹配前面的子表达式不多于n次
\{n,m\}匹配前面的子表达式n到m次(m>=n),例: mo\{2,3\}y、'[0-9]\{2,3\}'匹配两位到三位数字
注: egrep(grep-E)、awk使用{n }、{n, }、{n,m}匹配时"{}”前不用加"\"
\w匹配包括下划线的任何单词字符
\W匹配任何非单词字符。等价于"[^A-Za-z0-9_]"。
\d匹配一个数字字符
\D匹配一个非数字字符。等价于[^0-9]。
\s空白符
[:alpha:]字母,即A-Z,a-z
[:alnum:]字母和数字
[:lower:]小写字母,即a-z
[:upper:]大写字母,即A-Z
[:blank:]空白字符(空格和制表符)
[:space:]包括空格、制表符、换行符、回车符等各类型空白
[:print:]可打印字符
[:punct:]标点符号

 3、扩展正则表达式元字符

grep -E

字符作用
+表示匹配前面的子表达式1次以上
?表示匹配前面的子表达式0或者1次

( )

将括号里的内容看成一个整体
|以或的方式匹配字符串

二、grep

格式:

grep [选项]… 查找条件 目标文件

选项:

选项功能

-color=auto

对匹配到的文本着色显示
-m  #

匹配到#次后停止;匹配到#行后停止

-v显示没有被匹配到的行,即取反
-i忽略字符大小写
-n显示匹配到的行号
-c统计匹配到的行数
-o仅显示匹配到的字符串
-q静默模式,不输出任何信息
-A  #匹配到的行后#行也显示出来
-B  #匹配到的行前#行也显示出来
-C  #匹配到的行前后各#行也显示出来
-e实现多个选项间的逻辑or关系
-w匹配整个单词
-E扩展正则表达式,相当于egrep
-F不支持正则表达式,相当于fgrep
-f

file根据模式文件,处理两个文件相同内容,把第一个文件作为匹配条件

-r递归目录,但不处理软链接
-R递归目录,处理软链接

实例:

1、统计当前主机的连接状态

2、统计当前连接的主机数

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

DevOps落地笔记-04|看板方法:成员工作内容清楚明白方法

上一讲主要介绍了用户故事以及如何通过讲好用户故事解决团队沟通的问题,争取达成共识。当团队都理解了用户需求之后,就进入到后续的产品设计、代码开发、功能测试、直到生产部署等环节了。作为软件从业人员都知道,后续的步骤不太可能一帆风顺…

初探分布式链路追踪

本篇文章,主要介绍应用如何正确使用日志系统,帮助用户从依赖、输出、清理、问题排查、报警等各方面全面掌握。 可观测性 可观察性不单是一套理论框架,而且并不强制具体的技术规格。其核心在于鼓励团队内化可观察性的理念,并确保由…

Python 报错 ERROR: No matching distribution found for xxx

文章目录 1. 报错2. 可能的解决方法3. 参考 1. 报错 例如在安装 Python 包的时候,有时会出现这种情况: ERROR: Could not find a version that satisfies the requirement bokeh (from versions: none) ERROR: No matching distribution found for bok…

人工视觉仍然需要图像采集卡

最初,图像采集卡被用作模拟视频数字转换器和图像缓冲器,但如今它们能够执行复杂的任务,例如图像处理。图像采集卡的设计不断发展,旨在提高系统性能并减少计算机处理需求。 除了图像采集之外,图像采集卡还执行机器视觉…

【正点原子STM32】IWDG 独立看门狗(简介、工作原理、IWDG寄存器配置操作步骤、IWDG溢出时间计算、IWDG配置步骤、独立看门狗流程)

一、IWDG简介 IWDG有什么作用? 二、IWDG工作原理 三、IWDG框图 四、IWDG寄存器 键寄存器(IWDG_KR)预分频器寄存器 (IWDG_PR)重装载寄存器(IWDG_RLR) 状态寄存器(IWDG_SR) 寄存器配置操作步骤 五、IWDG溢出时间计算 IWDG溢出时间计算公式…

幻兽帕鲁服务器Palworld游戏怎么更新?

自建幻兽帕鲁服务器进入Palworld游戏提示“您正尝试加入的比赛正在运行不兼容的游戏版本,请尝试升级游戏版本”什么原因?这是由于你的客户端和幻兽帕鲁服务器版本不匹配,如何解决?更新幻兽帕鲁服务器即可解决。阿里云百科aliyunba…

【Android】高仿京东三级类型列表Demo

本demo基于二级分类双列表联动Demo进行了改进,高仿实现了京东的三级类型列表。 京东的如图: 本demo的: 改进之处 实现了三级列表联动,二三级列表之间的滑动监听优化了一下,将二级类型选中交予自身的点击事件&#…

prometheus和alertmanager inhibit_rules抑制的使用

172.16.10.21 prometheus 172.16.10.33 altermanager 172.16.10.59 mysql服务,node探针以及mysql的探针 [rootk8s-node02 ~]# docker ps -a CONTAINER ID IMAGE …

asp.net core通过读取配置文件来动态生成接口

如果希望接口是每次通过配置文件生成的,这样设计一些低代码的方式来获得接口。 系统目录结构: 启动配置代码: using Microsoft.AspNetCore.Hosting; using System.Configuration; using System.Data.Entity; using Swashbuckle.AspNetCore.SwaggerGen; using System.Refle…

第94讲:MySQL主从复制过滤复制的概念以及使用

文章目录 1.主从复制过滤复制的概念2.通过从库层面实现过滤复制2.1.从库过滤复制的参数2.2.配置过滤复制2.3.验证复制的准确性 1.主从复制过滤复制的概念 在MySQL主从复制集群中,既可以对全库进行主从复制,也可以对数据库实例中的某个数据库进行主从复制…

ShardingSphere 相关实践

实现水平分表 同一个数据库,多个表,把数据分到多个表里面环境:spring boot 2.3.2.RELEASE create database course_db;use course_db;create table course_1 (cid bigint(20) primary key ,cname varchar(50) not null,user_id bigint(20) …

机器学习---可能近似正确(PAC)、出错界限框架

1. 计算学习理论概述 从理论上刻画了若干类型的机器学习问题中的困难和若干类型的机器学习算法的能力 这个理论要回答的问题是: 在什么样的条件下成功的学习是可能的? 在什么条件下某个特定的学习算法可保证成功运行? 这里考虑两种框架&…

Java后端须知的前端知识

Java后端须知的前端知识 HTML &#xff08;超文本标记语言&#xff09; W3C标准 结构&#xff1a;HTML表现&#xff1a;CSS行为&#xff1a;JavaScript 快速入门 <html><head><title></title></head><body><font color"red&q…

无人机除冰保障电网稳定运行

无人机除冰保障电网稳定运行 近日&#xff0c;受低温雨雪冰冻天气影响&#xff0c;福鼎市多条输配电线路出现不同程度覆冰。 为保障福鼎电网安全可靠运行&#xff0c;供电所员工运用无人机飞行技术&#xff0c;通过在无人机下方悬挂器具&#xff0c;将无人机飞到10千伏青坑线…

代码随想录算法训练营第二十二天 |235. 二叉搜索树的最近公共祖先,701.二叉搜索树中的插入操作,450.删除二叉搜索树中的节点(待补充)

235.二叉搜索树的最近公共祖先 1、题目链接&#xff1a;力扣&#xff08;LeetCode&#xff09;官网 - 全球极客挚爱的技术成长平台 2、文章讲解&#xff1a;代码随想录 3、题目&#xff1a; 给定一个二叉搜索树, 找到该树中两个指定节点的最近公共祖先。 百度百科中最近公…

序列化流 ObjectInputStream 和 ObjectOutputStream 的基本使用【 File类+IO流知识回顾④】

序列化流 ObjectInputStream 和 ObjectOutputStream 的基本使用【 File类IO流知识回顾④】 序列化流序列化和反序列化如何实现序列化ObjectOutputStreamObjectInputStream 序列化流 什么是序列化&#xff1f;如何实现序列化&#xff1f;什么是反序列化&#xff1f;需要了解的类…

使用 Python 进行自然语言处理第 3 部分:使用 Python 进行文本预处理

一、说明 文本预处理涉及许多将文本转换为干净格式的任务&#xff0c;以供进一步处理或与机器学习模型一起使用。预处理文本所需的具体步骤取决于具体数据和您手头的自然语言处理任务。 常见的预处理任务包括&#xff1a; 文本规范化——将文本转换为标准表示形式&#xff0c;…

JVM篇----第十八篇

系列文章目录 文章目录 系列文章目录前言一、什么是Java虚拟机?为什么Java被称作是“平台无关的编程语言”?二、对象分配规则三、描述一下JVM加载class文件的原理机制?前言 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到…

《Lua程序设计》-- 学习9

迭代器和泛型for 迭代器和闭包 迭代器&#xff08;iterator&#xff09;是一种可以让我们遍历一个集合中所有元素的代码结构。在Lua语言中&#xff0c;通常使用函数表示迭代器&#xff1a;每一次调用函数时&#xff0c;函数会返回集合中的“下一个”元素。 一个闭包就是一个…

Kotlin快速入门系列9

Kotlin对象表达式和对象声明 对象表达式 有时&#xff0c;我们想要创建一个对当前类有些许修改的对象同时又不想重新声明一个子类。如果是Java&#xff0c;可以用匿名内部类的概念来解决这个问题。kotlin的对象表达式和对象声明就是为了实现这一点(创建一个对某个类做了轻微改…