Linux文本三剑客之grep命令

news2024/11/25 7:00:34

在这里插入图片描述

Linux文本三剑客之grep命令

1. grep 命令

介绍 grep 命令的基本语法格式和参数列表!

文本搜索工具,根据用户指定的”模式”对目标文本逐行进行匹配检查,打印匹配到的行。

模式:由正则表达式字符及文本字符所编写的过滤条件;
REGEXP:由一类特殊字符及文本字符所编写的模式,其中有些字符不表示字符字面意义,而表示控制或通配的功能;
正则表达式:

基本正则表达式:BRE
扩展正则表达式:ERE
格式:

grep [OPTIONS] PATTERN [FILE…]
grep [OPTIONS] [-e PATTERN | -f FILE] [FILE…]
参数选项:

–color=auto对匹配到的文本着色显示
-v显示不能够被 pattern 匹配到的行
-i忽略字符大小写
-o仅显示匹配到的字符串
-q静默模式,不输出任何信息
-A #after, 后#行
-B #before, 前#行
-C #context, 前后各#行
-E使用 ERE 表达式

2. 基本正则表达式

介绍常见 BRE 的匹配类型和使用方式!

2.1 字符匹配
.匹配任意单个字符;
匹配前面的字符任意次
[]匹配指定范围内的任意单个字符
[^]匹配指定范围外的任意单个字符
[:digit:]、[:lower:]、[:upper:]、[:alpha:]、[:alnum:]、[:punct:]、[:space:]
2.2 贪婪模式
.任意长度的任意字符
?匹配其前面的字符 0 或 1 次;即前面的可有可无
+匹配其前面的字符至少 1 次
{m}匹配前面的字符 m 次
{m,n}匹配前面的字符至少 m 次,至多 n 次
{0,n}匹配前面的字符至多 n 次
{m,}匹配前面的字符至少 m 次
2.3 位置锚定
^行首锚定;用于模式的最左侧
行 尾 锚 定 ; 用 于 模 式 的 最 右 侧 P A T T E R N 行尾锚定;用于模式的最右侧 ^PATTERN PATTERN用于模式匹配整行
^ 空 行 [ [ : s p a c e : ] ] ∗ 空行 ^[[:space:]]* [[:space:]]匹配空格
< 或 \b首锚定,用于单词模式的左侧
> 或 \b词尾锚定,用于单词模式的右侧
<PATTERN>匹配整个单词
2.4 分组
()将一个或多个字符捆绑在一起,当作一个整体进行处理
在(ab+(xy)
)中,\1代表ab+(xy)
,\2代表xy

Note:
1、分组括号中的模式匹配到的内容会被正则表达式引擎记录于内部的变量中
2、这些变量的命名方式为: \1, \2, \3, …
3、\1: 从左侧起,第一个左括号以及与之匹配右括号之间的模式所匹配到的字符
4、后向引用:引用前面的分组括号中的模式所匹配字符(而非模式本身)

2.5 实战演示

#1、如果用户root存在,显示其默认的shell程序
$ id root &> /dev/null && grep “^root>” /etc/passwd | cut -d: -f7

#2、找出/etc/passwd中的两位或三位数
$ grep “<[0-9]{2,3}>” /etc/passwd

#3、显示/etc/rc.d/rc.sysinit文件中,至少以一个空白字符开头的且后面存非空白字符的行
$ grep “[[:space:]]+[[:space:]]” /etc/grub2.cfg

#4、找出"netstat -tan"命令的结果中以’LISTEN’后跟0、1或多个空白字符结尾的行;
$ netstat -tan | grep “LISTEN[[:space:]]*$”

#使用grep查找时不匹配grep命令本身
$ ps -ef | grep [n]ginx

#cat /proc/[pid]/stat
#https://www.kawabangga.com/posts/4186#comment-29292
$ pkill host-networking
$ pkill -f host-networking

#查找进程号
$ systemctl show --property MainPID --value nginx.service
$ pidof nginx

3. 扩展的正则表达式

介绍常见 ERE 的匹配类型和使用方式!

3.1 字符匹配
.
[]
[^]
3.2 次数匹配
*
?
+
{m}
{m,n}
3.3 锚定
^
$
<, \b
>, \b
3.4 分组
()后向引用:\1, \2, …或者使用 a | bC | cat
3.5 实战演示

#1、显示当前系统root、centos或user1用户的默认shell和UID;
$ grep -E ‘^(root|centos|user1)>’ /etc/passwd | cut -d: -f1,3,7

#2、找出/etc/rc.d/init.d/functions文件(centos6)中某单词后面跟一个小括号的行;
$ grep -E -o “1+()” /etc/rc.d/init.d/functions

#、使用echo输出一绝对路径,使用egrep取出其基名;
$ echo “/mnt/sdc” | grep -E -o “[^/]+/?$” | cut -d"/" -f1

4. egrep and fgrep

egrep 命令egrep = grep -E
fgrep 命令fgrep:不支持正则表达式搜索,能够很快的进行搜索

文章作者: Escape

文章链接:
https://www.escapelife.site/posts/bd244e3d.html

版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 Escape 

  1. _[:alpha:] ↩︎

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

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

相关文章

MySQL 中截取字符串的方法

LEFT(str, len) 从左边开始截取&#xff0c;如果字符串为 null 则返回null。 str&#xff1a;被截取字符串&#xff1b;len&#xff1a;截取长度 SELECT LEFT(ABCDEFT, 2) FROM sub_str;RIGHT(str, len) 从右边开始截取&#xff0c;如果字符串为 null 则返回null。 str&…

0125 搜索与回溯算法 Day14

剑指 Offer 12. 矩阵中的路径 给定一个 m x n 二维字符网格 board 和一个字符串单词 word 。如果 word 存在于网格中&#xff0c;返回 true &#xff1b;否则&#xff0c;返回 false 。 单词必须按照字母顺序&#xff0c;通过相邻的单元格内的字母构成&#xff0c;其中“相邻…

GLAD:带有反射壁的空心波导

概述 离散傅里叶变换的混叠效应为带有反射壁的空心波导的建模提供了一个便捷的方法。反射壁可以将光返回到光路中而混叠效应将使溢出光场从反方向折回到采样光场中。如果光场分布是一个偶函数&#xff0c;那么折回的作用就如同反射效果。我们可以将任意形状的光场分布转化成…

推荐一款免费的AI绘图软件,可生成二次元画作和3D模型

随着AI绘画的火热&#xff0c;市面上关于AI绘画的话题居高不小&#xff0c;各种教程、软件、小程序也是满天飞&#xff0c;在这些眼花缭乱的推荐中&#xff0c;究竟哪一款ai绘图软件才是真正适合自己的&#xff0c;不但免费&#xff0c;生成出来的二次元画作还很精美&#xff1…

早教资源网站

开发工具(eclipse/idea/vscode等)&#xff1a; 数据库(sqlite/mysql/sqlserver等)&#xff1a; 功能模块(请用文字描述&#xff0c;至少200字)&#xff1a; 网站前台&#xff1a;关于我们、联系我们、公告信息、二手物品、资源信息 管理员功能&#xff1a; 1、管理关于我们、联…

Django 第三天学习笔记

1.模板层-变量和标签 能够传递到Django模板中的数据类型&#xff1a; 1.str 字符串 2.Int 整形 3.List 数组 4.Tuple 元组 5.Dict 字典 6.Func 方法 7.Obj 类的实例化对象。 在模板中使用的变量的语法&#xff1a; {{变量名}}{{变量名.index}} #索引{{变量名.key}} #获取字典对…

数据结构顺序栈

栈 这是大话数据结构种对于栈的描述 可以看到 栈是一种特殊的线性表 它只能在尾部进行元素的插入和删除 但是在栈种 这叫做 入栈 和 出栈 而且它遵循 先进入的元素后出 后进入的元素先出 即就是我们常听说的 先进后出 和后进先出 这里就有一个简单的例子 先进后出 后进先出…

【Node.js】实现微信小程序在线支付功能

实战项目名称&#xff1a;微信小程序实现在线支付功能 - 文章结尾附上微信小程序码&#xff0c;扫码登录后即可体验&#xff01;&#xff01; 文章目录一、实战步骤1. 前期准备2. 添加wechatpay-node-v3和fs插件3. 预设微信下单的数据4. 将上一步骤的下单信息返回给前端5. 小程…

在抖音全程看世界杯,超高清直播背后的硬实力

导语&#xff1a;IT技术赛场开赛&#xff01;作者 | 宋慧 出品 | CSDN&#xff08;ID&#xff1a;CSDNnews&#xff09;当前&#xff0c;2022 卡塔尔世界杯比赛正在如火如荼进行中&#xff0c;处在更加激烈关键的半决赛阶段。作为足球运动的全球顶级赛事&#xff0c;世界杯…

SysML图例-核聚变

DDD领域驱动设计批评文集>> 《软件方法》强化自测题集>> 《软件方法》各章合集>> [新闻]核聚变里程碑式突破>> SysML图中词汇&#xff1a; Tokamak&#xff1a; 一种利用磁约束来实现受控核聚变的环形容器&#xff0c;通过约束电磁波驱动&#xff…

如何形成前端知识体系

来啦各位大佬&#xff5e;但很不好意思&#xff0c;我就是标题党&#xff0c;这篇博文并没有很明确的给出「如何形成前端知识体系」答案&#xff0c;我自学前端&#xff0c;在面试字节的时候&#xff0c;字节的大佬说我的知识点没有成体系&#xff0c;很零散的飘在各个地方&…

面试官:你如何实现大文件上传

提到大文件上传&#xff0c;在脑海里最先想到的应该就是将图片保存在自己的服务器&#xff08;如七牛云服务器&#xff09;&#xff0c;保存在数据库&#xff0c;不仅可以当做地址使用&#xff0c;还可以当做资源使用&#xff1b;或者将图片转换成base64&#xff0c;转换成buff…

怎么复制网页上不能复制的文字(付费文档免费复制),一招搞定

好多小伙伴上网查资料的时候&#xff0c;想要复制网页内容&#xff0c;但是提示付费复制或者不允许复制&#xff0c;遇到这种情况怎么办呢&#xff1f;下面就是小编分享的一招搞定无法复制网页内容文字的方法。 怎么复制网页上不能复制的文字 借助360安全浏览器/360极速浏览器…

Minecraft 1.19.2 Forge模组开发 06.建筑生成

1.12.2自定义建筑生成 1.16.5自定义建筑生成 1.18.2自定义建筑生成 我们本次尝试在主世界生成一个自定义的建筑。 效果展示效果展示效果展示 由于版本更新缘故&#xff0c;1.19的建筑生成将不涉及任何Java包的代码编写&#xff0c;只需要在数据包中对建筑生成进行自定义。 …

基于粒子群优化算法的BP神经网络预测模型(Matlab代码实现)

目录 1 概述 2 粒子群优化算法 3 BP神经网络 4 PSO优化 BP网络算法 5 运行结果 6 参考文献 7 Matlab代码实现 1 概述 在工程应用中经常会遇到一些复杂的非线性系统,这些系统的状态方程复杂,难以准确的用数学方法建模,而BP神经网络实质上实现了一个从输入到输出的映射功…

【k8s】Kubernetes 基础组件详解

一、k8s简介 Kubernetes 是容器集群管理系统工具&#xff0c;是一个开源平台&#xff0c;可实现容器集群的自动化部署、自动扩缩容、维护等功能。Kubernetesk8s是Kubernetes的缩写&#xff0c;Google 于 2014 年开源了 Kubernetes 项目&#xff0c;Kubernetes的名字来自希腊语&…

无延时直播/超低延时直播实际测试延时效果(项目实测组图)

阿酷TONY / 2022-11-30 / 长沙 / 超多组图 无延时直播/超低延时直播&#xff0c;主要只测试延时情况&#xff0c;没有涉及直播产品的功能、使用操作界面&#xff0c;有兴趣的朋友可以加联系我实际测试哦~~~ 1.无延时直播应用场景 无延时直播/超低延时常见应用场景&#…

近90天互动量破百万,「围炉煮茶」究竟做对了什么?

今年秋冬&#xff0c;“围炉煮茶”爆红网络。小红书相关笔记数量突破8万&#xff0c;累计话题浏览量1200万次&#xff0c;近90天互动量破百万&#xff01; 茶&#xff0c;从老一辈的茶杯茶盘里&#xff0c;通过创新再造&#xff0c;成为年轻人的社交“新”头好。高流量曝光、高…

Go语言性能剖析利器--pprof实战

作者&#xff1a;耿宗杰 前言 关于pprof的文章在网上已是汗牛充栋&#xff0c;却是千篇一律的命令介绍&#xff0c;鲜有真正实操的&#xff0c;本文将参考Go社区资料&#xff0c;结合自己的经验&#xff0c;实战Go程序的性能分析与优化过程。 优化思路 首先说一下性能优化的…

什么是文档管理?

什么是文档管理&#xff1f; 文档管理是指在公司或组织内部组织、存储和检索文档以及自动化工作流程所需的流程和资源。文档可以是硬拷贝或数字格式&#xff0c;包括合同、表单、发票、工作申请、福利登记信息和其他记录。 强大的文档管理的重要性 平均而言&#xff0c;由于…