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

【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
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'

相关文章:

【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地…...

【Godot4.3】匀速和匀变速直线运动粒子

概述 本篇论述,如何用加速度在Godot中控制粒子运动。 匀速和匀变速直线运动的统一 以下是匀变速运动的速度和位移公式: v t v 0 a t x t v 0 t 1 2 a t 2 v_tv_0 at \\ x_tv_0t \frac{1}{2}at^2 vt​v0​atxt​v0​t21​at2 当a 0 时&#xf…...

基于Hive和Hadoop的用电量分析系统

本项目是一个基于大数据技术的用电量分析系统,旨在为用户提供全面的电力消耗信息和深入的用电量分析。系统采用 Hadoop 平台进行大规模数据存储和处理,利用 MapReduce 进行数据分析和处理,通过 Sqoop 实现数据的导入导出,以 Spark…...

一个简单的摄像头应用程序4

我们进一步完善了这个app01.py,我们优化了界面使其更人性化,下面介绍中包含了原有的功能及新增的功能: 创建和管理文件夹: create_folder 函数用于创建保存照片和视频的文件夹。 get_next_file_number 函数用于获取文件夹中下一个可用的文件编号。 图像处理: pil_to_cv 函…...

SpringBoot使用EasyPoi根据模板导出word or pdf

1、导出效果 1.1 wrod 1.2 pdf 2、依赖 <!--word--><dependency><groupId>cn.afterturn</groupId><artifactId>easypoi-base</artifactId><version>4.3.0</version></dependency><dependency><groupId>cn.…...

NVIDIA Hopper 架构深入

在 2022 年 NVIDIA GTC 主题演讲中,NVIDIA 首席执行官黄仁勋介绍了基于全新 NVIDIA Hopper GPU 架构的全新 NVIDIA H100 Tensor Core GPU。 文章目录 前言一、NVIDIA H100 Tensor Core GPU 简介二、NVIDIA H100 GPU 主要功能概述1. 新的流式多处理器 (SM) 具有许多性能和效率…...

AWS IoT Core for Amazon Sidewalk

目录 1 前言2 AWS IoT2.1 准备条件2.2 创建Credentials2.2.1 创建user2.2.2 配置User 2.3 本地CLI配置Credentials 3 小结 1 前言 在测试Sidewalk时&#xff0c;device发送数据&#xff0c;网关接收到&#xff0c;网关通过网络发送给NS&#xff0c;而此处用到的NS是AWS IoT&am…...

今日指数项目项目集成RabbitMQ与CaffienCatch

今日指数项目项目集成RabbitMQ与CaffienCatch 一. 为什么要集成RabbitMQ 首先CaffeineCatch 是作为一个本地缓存工具 使用CaffeineCatch 能够大大较少I/O开销 股票项目 主要分为两大工程 --> job工程(负责数据采集) , backend(负责业务处理) 由于股票的实时性也就是说 ,…...

C0005.Clion中移动ui文件到新目录后,报错问题的解决

报错问题如下 AutoUic error ------------- "SRC:/confirmwizardpage.cpp" includes the uic file "ui_confirmwizardpage.h", but the user interface file "confirmwizardpage.ui" could not be found in the following directories"SRC…...

基于STM32的智能家居灯光控制系统设计

引言 本项目将使用STM32微控制器实现一个智能家居灯光控制系统&#xff0c;能够通过按键、遥控器或无线模块远程控制家庭照明。该项目展示了如何结合STM32的外设功能&#xff0c;实现对灯光的智能化控制&#xff0c;提升家居生活的便利性和节能效果。 环境准备 1. 硬件设备 …...

06.useEffect

在 React 开发中,正确使用 useEffect 钩子对于优化组件性能至关重要。一个常见但容易被忽视的性能问题是在依赖数组中使用对象作为依赖项。这可能导致不必要的效果重新执行,从而影响应用性能。通过优先使用原始值(如字符串、数字)作为依赖项,我们可以显著提高组件的效率。…...

【设计模式-中介者模式】

定义 中介者模式&#xff08;Mediator Pattern&#xff09;是一种行为设计模式&#xff0c;通过引入一个中介者对象&#xff0c;来降低多个对象之间的直接交互&#xff0c;从而减少它们之间的耦合度。中介者充当不同对象之间的协调者&#xff0c;使得对象之间的通信变得简单且…...

树和二叉树知识点大全及相关题目练习【数据结构】

树和二叉树 要注意树和二叉树是两个完全不同的结构、概念&#xff0c;它们之间不存在包含之类的关系 树的定义 树&#xff08;Tree&#xff09;是n&#xff08;n≥0&#xff09;个结点的有限集&#xff0c;它或为空树&#xff08;n 0&#xff09;&#xff1b;或为非空树&a…...

ajax的原理,使用场景以及如何实现

AJAX 原理 AJAX&#xff08;Asynchronous JavaScript and XML&#xff09;是一种在网页中实现异步通信的技术&#xff0c;允许网页在不重新加载整个页面的情况下与服务器交换数据。这使得网页应用可以更加响应式和动态&#xff0c;提升用户体验。 AJAX 的核心原理是在后台通过…...

lock_guard和unique_lock学习总结

1.std::lock_guard std::lock_guard其实就是简单的RAII&#xff08;Resource Acquisition Is Initialization&#xff09;封装&#xff0c;资源获取即初始化。在构造函数中进行加锁&#xff0c;析构函数中进行解锁&#xff0c;这样可以保证函数退出时&#xff0c;锁一定被释放…...

数据挖掘-padans初步使用

目录标题 Jupyter Notebook安装启动 Pandas快速入门查看数据验证数据建立索引数据选取⚠️注意&#xff1a;排序分组聚合数据转换增加列绘图line 或 **&#xff08;默认&#xff09;&#xff1a;绘制折线图。bar&#xff1a;绘制条形图。barh&#xff1a;绘制水平条形图。hist&…...

小阿轩yx-案例:项目发布基础

小阿轩yx-案例&#xff1a;项目发布基础 前言 随着软件开发需求及复杂度的不断提高&#xff0c;团队开发成员之间如何更好地协同工作以确保软件开发的质量已经慢慢成为开发过程中不可回避的问题。Jenkins 自动化部署可以解决集成、测试、部署等重复性的工作&#xff0c;工具集…...

【HarmonyOS】时间处理Dayjs

背景 在项目中经常会使用要时间的格式转换&#xff0c;比如数据库返回一个Date数据&#xff0c;你需要转成2024-10-2的格式&#xff0c;鸿蒙的原生SDK中是没有办法实现的&#xff0c;因此&#xff0c;在这里介绍第三方封装好并且成熟使用的库Dayjs。 安装 切换到Entry文件夹下…...

论React Native 和 UniApp 的区别

1. 开发语言与框架 React Native: 使用 JavaScript 和 React 框架进行开发。采用了 React 的组件化开发模式&#xff0c;适合熟悉 React 生态的开发者。使用 JavaScript 编写的代码会通过 React Native 框架桥接到原生代码&#xff08;如 iOS 的 Swift 或 Android 的 Java/Kotl…...

微信小程序处理交易投诉管理,支持多小程序

大家好&#xff0c;我是小悟 1、问题背景 玩过微信小程序生态的&#xff0c;或许就有这种感受&#xff0c;如果收到投诉单&#xff0c;不会及时通知到手机端&#xff0c;而是每天早上10:00向小程序的管理员及运营者推送通知。通知内容为截至前一天24时该小程序账号内待处理的交…...

【力扣数据库知识手册笔记】索引

索引 索引的优缺点 优点1. 通过创建唯一性索引&#xff0c;可以保证数据库表中每一行数据的唯一性。2. 可以加快数据的检索速度&#xff08;创建索引的主要原因&#xff09;。3. 可以加速表和表之间的连接&#xff0c;实现数据的参考完整性。4. 可以在查询过程中&#xff0c;…...

将对透视变换后的图像使用Otsu进行阈值化,来分离黑色和白色像素。这句话中的Otsu是什么意思?

Otsu 是一种自动阈值化方法&#xff0c;用于将图像分割为前景和背景。它通过最小化图像的类内方差或等价地最大化类间方差来选择最佳阈值。这种方法特别适用于图像的二值化处理&#xff0c;能够自动确定一个阈值&#xff0c;将图像中的像素分为黑色和白色两类。 Otsu 方法的原…...

ffmpeg(四):滤镜命令

FFmpeg 的滤镜命令是用于音视频处理中的强大工具&#xff0c;可以完成剪裁、缩放、加水印、调色、合成、旋转、模糊、叠加字幕等复杂的操作。其核心语法格式一般如下&#xff1a; ffmpeg -i input.mp4 -vf "滤镜参数" output.mp4或者带音频滤镜&#xff1a; ffmpeg…...

大数据学习(132)-HIve数据分析

​​​​&#x1f34b;&#x1f34b;大数据学习&#x1f34b;&#x1f34b; &#x1f525;系列专栏&#xff1a; &#x1f451;哲学语录: 用力所能及&#xff0c;改变世界。 &#x1f496;如果觉得博主的文章还不错的话&#xff0c;请点赞&#x1f44d;收藏⭐️留言&#x1f4…...

Unsafe Fileupload篇补充-木马的详细教程与木马分享(中国蚁剑方式)

在之前的皮卡丘靶场第九期Unsafe Fileupload篇中我们学习了木马的原理并且学了一个简单的木马文件 本期内容是为了更好的为大家解释木马&#xff08;服务器方面的&#xff09;的原理&#xff0c;连接&#xff0c;以及各种木马及连接工具的分享 文件木马&#xff1a;https://w…...

Fabric V2.5 通用溯源系统——增加图片上传与下载功能

fabric-trace项目在发布一年后,部署量已突破1000次,为支持更多场景,现新增支持图片信息上链,本文对图片上传、下载功能代码进行梳理,包含智能合约、后端、前端部分。 一、智能合约修改 为了增加图片信息上链溯源,需要对底层数据结构进行修改,在此对智能合约中的农产品数…...

关于easyexcel动态下拉选问题处理

前些日子突然碰到一个问题&#xff0c;说是客户的导入文件模版想支持部分导入内容的下拉选&#xff0c;于是我就找了easyexcel官网寻找解决方案&#xff0c;并没有找到合适的方案&#xff0c;没办法只能自己动手并分享出来&#xff0c;针对Java生成Excel下拉菜单时因选项过多导…...

Ubuntu Cursor升级成v1.0

0. 当前版本低 使用当前 Cursor v0.50时 GitHub Copilot Chat 打不开&#xff0c;快捷键也不好用&#xff0c;当看到 Cursor 升级后&#xff0c;还是蛮高兴的 1. 下载 Cursor 下载地址&#xff1a;https://www.cursor.com/cn/downloads 点击下载 Linux (x64) &#xff0c;…...

mac:大模型系列测试

0 MAC 前几天经过学生优惠以及国补17K入手了mac studio,然后这两天亲自测试其模型行运用能力如何&#xff0c;是否支持微调、推理速度等能力。下面进入正文。 1 mac 与 unsloth 按照下面的进行安装以及测试&#xff0c;是可以跑通文章里面的代码。训练速度也是很快的。 注意…...

Python训练营-Day26-函数专题1:函数定义与参数

题目1&#xff1a;计算圆的面积 任务&#xff1a; 编写一个名为 calculate_circle_area 的函数&#xff0c;该函数接收圆的半径 radius 作为参数&#xff0c;并返回圆的面积。圆的面积 π * radius (可以使用 math.pi 作为 π 的值)要求&#xff1a;函数接收一个位置参数 radi…...