【Linux运维】grep命令粗浅学习

文章目录

  • 1 背景介绍
    • 1.1 为什么要学习grep?
    • 1.2 grep是什么?
    • 1.3 grep可以做什么?
  • 2 grep基本语法
    • 2.1 命令格式
    • 2.2 “PATTERN”部分中的基础型正则表达式语法学习
    • 2.3 grep命令参数学习
  • 3 典型案例
    • 3.1 匹配非空行,过滤纯空行
    • 3.2 匹配IPv4地址,点分10进制方式
    • 3.3 匹配出现”ERROR“字样的文本,大小写不敏感,前后10行显示出来
    • 3.4 查找指定包路径“com.cn.test."的行数据
    • 3.5 查找指定字符串”delete ...in..."字样的行数据,不区分大小写

1 背景介绍

1.1 为什么要学习grep?

linux环境下,没有可直接操作的界面化的软件,文本怎么快速摘取出来?
怎么用通用的处理方法,而不用强依赖某个电脑或者服务器是否安装了什么软件,做到从容处理文本呢?
怎么可以快速去做linux家族的日志分析?
等等等。。。还是有必要学习。 如果这些场景你都不可能遇到或者你有其他强大的文本处理软件,可以先不用学习这个。

1.2 grep是什么?

查了下,grep是指:Global Regular Expression Print
的缩写,中文翻译:全局正则表达式打印,打印匹配给定模式的行。其输入可以是文件或者标准的输入

1.3 grep可以做什么?

grep能做的事情非常聚焦,它就是从一堆文本中按照指定的文本模式进行匹配,把匹配命中的文本行打印出来或者作为其他命令的输入进行其他操作处理。

2 grep基本语法

2.1 命令格式

   grep [options] PATTERN [FILE...]grep [options] [-e PATTERN | -f FILE] [FILE...]

注意1:
PATTERN 参数值格式格式’匹配内容’,注意支持基础的正则表达式,说的是基础的正则表达式,有些特殊符号是不支持的,但是基础的是支持的。
注意2:
grep匹配的时候,支持指定多个文件名。
*

2.2 “PATTERN”部分中的基础型正则表达式语法学习

在基本正则表达式中,元字符 ?, +, {, |, (, 和 ) 实际使用的时候需要加上转义字符反斜杠: \?, \+, \{, \|, \(, 和 \) 。

序号PATTERN中内容正则字符语法说明用法示例
1\*表示对星号前面的子表达式匹配>=0次grep -n ‘1\*’ ‘mytest.txt’
2\+表示对加号前面的子表达式匹配>=1次
3\?表示对问号前面的子表达式匹配0次或1次
4\{n\}子表示可以用小括号包括起来,表示对修饰的子表达式匹配n次,n为非负整数grep -n ‘(12){2}’ ‘123.txt’
5\{n,\}
6\{n,m\}
1^修饰表达式的时候,放在最前面位置,表示是目标匹配的内容在行首
2$修饰时表达式的时候,放在最后的位置,表示是目标匹配的内容在行尾
1. 这里有个英文的点,有可能看不清楚代表的是一个任意字符的字符,相当于说是一个字符的占位,一定要区分,这里的点表示的含义。如果要表示点字符本身,可以结合转义字符grep -n ‘1.3’ ‘123.txt’ 查找包含1和3数字中间包括任意一个字符的字符串输出到界面,注意不是查询1.3这个小数。
2[list]查询指定的字符集合,查询的目标是这个字符集合中的其中一个字符。grep -n ‘1[ab]3’ ‘123.txt’ 目的是查找1a3 1b3 而不是1ab3
3[n1-n2]查询指定的字符范围内的其中一个字符。grep -n ‘1[1-3]3’ ‘123.txt’ 目的是查找113 123 133 3种场景
4[^list]查找的是不在字符集合或者字符范围内的行,特别注意,如果当前行数据中存在符合这个查询条件的任意字符情况的时候,当前行也会被命中,即使当前行还有其他的不符合匹配模式的字符出现。假如:行数据是12345,匹配模式是[^123],那么该行还是会被命中,原因是4 5 是123范围之外的,这个角度上看属于匹配命中。
5子表达式1|子表达式2|子表达式3竖线符号,是联合多个匹配表达式例如:‘aa|12’ 这个模式表示的是匹配包括aa或者12这2个字符串的行数据
1\转义字符比如:点.、星号*,你不希望它分别表达一个任意字符,和重复0次到多次的含义,你想它就是点和星号,那可以\. \* 这样来编写。

2.3 grep命令参数学习

序号参数分类参数语法说明其他补充
1基本常用-a,–text将二进制文件以文本文件来处理,相当于–binary-files=text
2基本常用-c,–count只输出统计数据,不输出匹配的行结果,输出的s数值是按照指定模式匹配命中的行数。
3基本常用-i, --ignore-case忽略模式 PATTERN 中的大小写的分别。大小写在匹配的过程中不敏感。
4基本常用-n, --line-number在输出的每行结果的前面显示该行在文件中所处的行号。
5基本常用-v, --invert-match小写的v参数,匹配的目标是不符合PATTERN的行。
6基本常用–color=auto值可以是never,always,auto。never意思就是从不显示颜色;always意思总是显示颜色;auto,相当于于查询到的结果中查到的关键字是红色高亮,其他文本是保持原来的颜色。很多环境默认是grep效果默认是grep --color=auto,这里应该是使用alias设置过了。
1高级常用-A NUM, --after-context=NUM输出匹配命中的行紧接下来后面的的NUM行,如果输出这些NUM行后面还有其他非匹配命中的行,会增加一行–作为标示。请注意识别。
2高级常用-B NUM, --before-context=NUM输出匹配命中的行紧接前面的的NUM行,如果输出这些NUM行前面还有其他非匹配命中的行,会增加一行–作为标示。请注意识别。
3高级常用-C NUM, --context=NUM输出匹配命中的行紧接前面和后面的的NUM行,如果输出这些NUM行前面还有后面还有其他非匹配命中的行,会增加一行–作为标示。请注意识别。
4高级常用-o, --only-matchingshow only the part of a line matching PATTERN
5高级常用-R, -r, --recursive递归地读每一目录下的所有文件注意文件太多
6高级常用-l, --files-with-matchesprint only names of FILEs containing matches
7高级常用-L, --files-without-matchprint only names of FILEs containing no match
8高级常用-x, --line-regexp匹配的行是,完整的一行匹配命中。输出这些行。等价于在模式前面增加开头和结尾符号。例如:grep -nx ‘1’ text.txt 等价于 grep -n ‘^1$’ text.txt
9高级常用-E, --extended-regexp将模式 PATTERN 作为一个扩展的正则表达式来解释相当于egrep命令,这个建议后续在用grep命令达到一定的瓶颈或者不够简洁的时候,考虑学习这个方式的使用
1命令帮助–help查询命令行的简要帮助信息
2命令帮助man grep详细的命令帮助信息

3 典型案例

3.1 匹配非空行,过滤纯空行

如果是包括空格的行,那是不会被过滤掉。

grep -nv '^$' 123.txt

3.2 匹配IPv4地址,点分10进制方式

比较方便的提取IP格式的文本的行

grep -n '\([0-9]\{3,\}\.\)\{3\}[0-9]\{3,\}'  123.txt

3.3 匹配出现”ERROR“字样的文本,大小写不敏感,前后10行显示出来

用于日志快速分析,比较有用。

grep -ni -C10 'ERROR' '123.txt'
grep -ni -A10 -B10 'ERROR' '123.txt'

3.4 查找指定包路径“com.cn.test."的行数据

grep -n 'com\.cn\.test\.' '123.txt'

3.5 查找指定字符串”delete …in…"字样的行数据,不区分大小写

这里的空格是直接输入的空格。

grep -ni 'delete .*in' '123.txt'

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

如 有 任 何 问 题 ,请 及 时 联 系 我 们 反 馈 !

如有任何问题, 请及时联系我们反馈 !https://support.qq.com/products/671606 如有任何问题, 请及时联系我们反馈 !

中间件介绍

可以把中间件想象成是在应用和系统之间搭建的一座桥梁,或者说是一个“翻译官”和“中转站”。它处在操作系统、网络和数据库之上,应用软件的下层,负责实现应用软件之间的互联互通,使得应用软件能够更方便、高效地进行数据交换和通…

【深度学习】— softmax回归、网络架构、softmax 运算、小批量样本的向量化、交叉熵

【深度学习】— softmax回归、网络架构、softmax 运算、小批量样本的向量化、交叉熵 3.4 Softmax 回归3.4.1 分类问题3.4.2 网络架构 3.4.3 全连接层的参数开销3.4.4 softmax 运算3.4.5 小批量样本的向量化3.4.6 损失函数对数似然softmax 的导数 3.4.7 信息论基础熵信息量重新审…

网站开发基础:HTML、CSS

前端开发主要使用的技术如 HTML、CSS 和 JavaScript 等。 简单制作一个网页 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>柒毓同学网站的首页</title><style>.c1{border: solid 1px g…

C语言—单链表

目录 一、链表的概念及结构 二、单链表实现 &#xff08;2.1&#xff09;基本结构定义 &#xff08;2.2&#xff09;申请节点 &#xff08;2.3&#xff09;打印函数 &#xff08;2.4&#xff09;头部插入删除\尾部插入删除 &#xff08;2.4.1&#xff09;尾部插入 &…

计算机毕业设计 智慧物业服务系统的设计与实现 Java实战项目 附源码+文档+视频讲解

博主介绍&#xff1a;✌从事软件开发10年之余&#xff0c;专注于Java技术领域、Python人工智能及数据挖掘、小程序项目开发和Android项目开发等。CSDN、掘金、华为云、InfoQ、阿里云等平台优质作者✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精…

【算法笔记】双指针算法深度剖析

【算法笔记】双指针算法深度剖析 &#x1f525;个人主页&#xff1a;大白的编程日记 &#x1f525;专栏&#xff1a;算法笔记 文章目录 【算法笔记】双指针算法深度剖析前言一.移动零1.1题目1.2思路分析1.3代码实现 二.复写零2.1题目2.2思路分析2.3代码实现 三.快乐数3.1题目…

【自然语言处理】(1) --语言转换方法

文章目录 语言转换方法一、统计语言模型1. 词向量转换2. 统计模型问题 二、神经语言模型1. 词向量化2. 维度灾难3. 解决维度灾难4. embedding词嵌入5. Word2Vec技术5.1 连续词袋模型&#xff08;CBOW&#xff09;5.2 跳字模型&#xff08;Skip-gram&#xff09; 总结 语言转换方…

【ssh-xorg】SSH远程配置X11窗口回传

前言 我们通常在进行远程配置板端的时候往往会出现一个问题&#xff0c;在不连接显示屏或者启用VNC服务的前提下(或者使用其他软件提供的功能)&#xff0c;我们无法在远程终端看到板端的新窗口&#xff0c;本文提供一种方式&#xff0c;在进行ssh远程连接时候制定参数-CX&…

【大数据】Doris 数据库与表操作语法实战详解

目录 一、前言 二、数据库基本操作 2.1 修改账户密码 2.2 创建新用户 2.3 创建数据库与账户授权 2.3.1 数据库创建补充说明 2.3.2 数据库账户赋权 三、数据表基本操作 3.1 Doris 数据表介绍与使用 3.1.1 建表结构说明 3.1.2 建表语法与操作 3.1.3 建表示例 - 单分区…

探索大型语言模型在文化常识方面的理解能力与局限性

介绍 论文地址&#xff1a;https://arxiv.org/pdf/2405.04655v1 近年来&#xff0c;大型语言模型&#xff08;LLM&#xff09;不仅被广泛应用于各个领域&#xff0c;而且通过大量的基准评估&#xff0c;证明它们能够理解人类所拥有的常识&#xff08;Commonsense&#xff09;…

pdf怎么编辑修改内容?详细介绍6款pdf编辑器功能

■ pdf怎么编辑修改内容&#xff1f; PDF&#xff08;Portable Document Format&#xff09;作为一种广泛使用的文件格式&#xff0c;具有特点包括兼容性强、易于传输、文件安全性高、跨平台性、可读性强、完整性、可搜索性、安全性、可压缩性。 PDF文件本身是不可以直接进行编…

深度学习--------------------------------门控循环单元GRU

目录 门候选隐状态隐状态门控循环单元GRU从零开始实现代码初始化模型参数定义隐藏状态的初始化函数定义门控循环单元模型训练该部分总代码简洁代码实现 做RNN的时候处理不了太长的序列&#xff0c;这是因为把整个序列信息全部放在隐藏状态里面&#xff0c;当时间很长的话&#…

jmeter操作数据库

jmeter操作数据库 一、打开数据库 二、jmeter下载驱动&#xff0c;安装jdbc驱动 1、下载好的驱动包 2、将驱动包复制粘贴 存放在包的路径下 &#xff08;1&#xff09;jdk下面 a、路径&#xff1a;jdk1\jre\lib b、jdk1\jre\lib\ext &#xff08;2&#xff09;jmeter下 a、…

SpringIoC容器的初识

一、SpringIoC容器的介绍 Spring IoC 容器&#xff0c;负责实例化、配置和组装 bean&#xff08;组件&#xff09;。容器通过读取配置元数据来获取有关要实例化、配置和组装组件的指令。配置元数据以 XML、Java 注解或 Java 代码形式表现。它允许表达组成应用程序的组件以及这…

基于依赖注入技术的.net core WebApi框架创建实例

依赖注入&#xff08;Dependency Injection, DI&#xff09;是一种软件设计模式&#xff0c;用于实现控制反转&#xff08;Inversion of Control, IoC&#xff09;。在ASP.NET Core中&#xff0c;依赖注入是内置的核心功能之一。它允许你将应用程序的组件解耦和配置&#xff0c…

Linux:进程入门(进程与程序的区别,进程的标识符,fork函数创建多进程)

往期文章&#xff1a;《Linux&#xff1a;深入了解冯诺依曼结构与操作系统》 Linux&#xff1a;深入理解冯诺依曼结构与操作系统-CSDN博客 目录 1. 概念 2. 描述进程 3. 深入理解进程的本质 4. 进程PID 4.1 指令获取PID 4.2 geipid函数获取PID 4.3 kill指令终止进程 …

Linux驱动开发(速记版)--GPIO子系统

第105章 GPIO 入门 105.1 GPIO 引脚分布 RK3568 有 5 组 GPIO&#xff1a;GPIO0 到 GPIO4。 每组 GPIO 又以 A0 到 A7&#xff0c;B0 到 B7&#xff0c;C0 到C7&#xff0c;D0 到 D7&#xff0c;作为区分的编号。 所以 RK3568 上的 GPIO 是不是应该有 5*4*8160 个呢&#xff1…

MySQL高阶2004-职员招聘人数

目录 题目 准备数据 分析数据 实现 题目 一家公司想雇佣新员工。公司的工资预算是 70000 美元。公司的招聘标准是&#xff1a; 雇佣最多的高级员工。在雇佣最多的高级员工后&#xff0c;使用剩余预算雇佣最多的初级员工。 编写一个SQL查询&#xff0c;查找根据上述标准雇…

男单新老对决:林诗栋VS马龙,巅峰之战

听闻了那场激动人心的新老对决&#xff0c;不禁让人热血沸腾。在这场乒乓球的巅峰之战中&#xff0c;林诗栋与马龙的对决无疑是一场视觉与技术的盛宴。 3:3的决胜局&#xff0c;两位选手的每一次挥拍都充满了策略与智慧&#xff0c;他们的每一次得分都让人心跳加速。 林诗栋&am…