Linux|Grep 命令的 12 个实用示例

您是否曾经遇到过在文件中查找特定字符串或模式的任务,但不知道从哪里开始查找?那么,grep 命令可以拯救你!

grep 是一个功能强大的文件模式搜索器,每个 Linux 发行版都配备了它。如果出于某种原因,它没有安装在您的系统上,您可以通过包管理器轻松安装它,如图所示。

$ sudo apt install grep         [On Debian, Ubuntu and Mint]
$ sudo yum install grep         [On RHEL/CentOS/Fedora and Rocky Linux/AlmaLinux]
$ sudo emerge -a sys-apps/grep  [On Gentoo Linux]
$ sudo apk add grep             [On Alpine Linux]
$ sudo pacman -S grep           [On Arch Linux]
$ sudo zypper install grep      [On OpenSUSE] 

我发现熟悉 grep 命令的最简单方法就是直接深入并使用一些示例。

1.搜索和查找文件

假设您刚刚在计算机上安装了新 Ubuntu,并且打算尝试使用 Python 脚本。

您一直在网上寻找教程,但您看到有两个不同版本的 Python 正在使用,并且您不知道安装程序在 Ubuntu 上安装了哪个版本的 Python,也不知道它是否安装了任何模块。

只需使用 grep 运行以下 dpkg 命令,如下所示:

dpkg -l | grep -i python
alt

首先,我们运行 dpkg –l,它列出了系统上已安装的 *.deb 软件包。其次,我们将该输出通过管道传输到 grep -i python,它只是声明“转到 grep 并过滤掉并返回其中包含‘python’的所有内容。”

-i 选项用于忽略大小写,因为 grep 区分大小写。

2. 搜索和过滤文件

grep 还可用于在单个文件或多个文件中搜索和过滤。您的 Apache Web 服务器遇到了一些问题,并且您已联系网络上众多精彩论坛之一寻求帮助。回复您的好心人要求您发布 /etc/apache2/apache2.conf 文件的内容。如果你能删除所有注释行,对你、帮助你的人以及阅读它的每个人来说不是更容易吗?好吧,你可以!只需运行这个:

grep -v ^\# /etc/apache2/apache2.conf | grep .

-v 选项告诉 grep 反转其输出,这意味着不打印匹配的行,而是执行相反的操作并打印所有与表达式不匹配的行,在本例中为 # 注释行。

请注意,我们还使用了 grep .最后以隐藏所有空行的输出。这样我们只能在终端中看到配置设置。

alt

3.查找所有.mp3文件

grep 对于从标准输出进行过滤非常有用。例如,假设您有一个完整的文件夹,其中充满了多种不同格式的音乐文件。

您想要查找艺术家 JayZ 的所有 *.mp3 文件,但您不需要任何重新混音的曲目。使用 find 命令和几个 grep 管道就可以解决问题:

find . -name “*.mp3” | grep –i JayZ | grep –vi “remix”

在此示例中,我们使用 find 打印所有带有 *.mp3 扩展名的文件,将其通过管道传输到 grep –i 以过滤并打印名称为“JayZ”的所有文件,然后将另一个管道传输到 grep –vi 进行过滤out 并且不会打印带有字符串(在任何情况下)“remix”的所有文件名。

4. 显示搜索字符串之前或之后的行数

另外两个选项是 -A 和 -B 开关,它们显示匹配的行以及搜索字符串之前或之后的多行。最容易记住的选项是 -A = after 和 -B = before:

ifconfig | grep -A 4 inet
ifconfig | grep -B 2 UP
alt

5. 打印匹配周围的行数

grep 的 -C 选项类似,但它不是打印字符串之前或之后的行,而是打印任一方向的行:

ifconfig | grep -C 2 lo

 TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
        inet 127.0.0.1  netmask 255.0.0.0
        inet6 ::1  prefixlen 128  scopeid 0x10<host>
        loop  txqueuelen 1000  (Local Loopback)
        RX packets 15314  bytes 1593769 (1.5 MB)
        RX errors 0  dropped 0  overruns 0  frame 0

6. 计算匹配的数量

类似于通过管道将 grep 字符串传递给字数统计(wc 命令),grep 的内置选项可以为您执行相同的操作:

ifconfig | grep -c inet6

7. 按给定字符串搜索文件

grep 的 –n 选项在编译错误期间调试文件时非常有用。它显示给定搜索字符串在文件中的行号:

grep -n "main" setup.py

8. 在所有目录中递归搜索字符串

如果您想在当前目录以及所有子目录中搜索字符串,可以指定 -r 选项进行递归搜索:

grep -r “function” *

9. 搜索整个模式

将 -w 选项传递给 grep 会搜索字符串中的整个模式。例如,使用:

ifconfig | grep -w "RUNNING"

将打印出包含引号中的模式的行。另一方面,如果您尝试:

ifconfig | grep -w "RUN"
alt

不会返回任何内容,因为我们搜索的不是模式,而是整个单词。

10. 在 Gzipped 文件中搜索字符串

值得一提的是 grep 的衍生物。第一个是 zgrep,它与 zcat 类似,用于 gzip 压缩文件。它采用与 grep 相同的选项并以相同的方式使用:

zgrep -i error /var/log/syslog.2.gz
alt

11. 匹配文件中的正则表达式

egrep 命令是另一个派生命令,代表“扩展全局正则表达式”。它可以识别其他表达式元字符,例如 + ? |和 ()。如果需要的话,egrep 命令对于搜索源文件和其他代码片段非常有用。可以通过指定 -E 选项从常规 grep 调用它。

grep -E

12. 搜索固定模式字符串

fgrep 命令在文件或文件列表中搜索固定模式字符串。与 grep -F 相同。使用 fgrep 的常见方法是将模式文件传递给它:

fgrep –f file_full_of_patterns.txt file_to_search.txt

这只是 grep 的一个起点,但正如您可能看到的,它对于多种用途来说都是无价的。

本文由 mdnice 多平台发布

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

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

相关文章

【C++入门学习指南】:函数重载提升代码清晰度与灵活性

&#x1f3a5; 屿小夏 &#xff1a; 个人主页 &#x1f525;个人专栏 &#xff1a; C入门到进阶 &#x1f304; 莫道桑榆晚&#xff0c;为霞尚满天&#xff01; 文章目录 &#x1f4d1;前言一、函数重载1.1 函数重载的概念1.2 函数重载的作用1.3 C支持函数重载的原理1.4 扩展 &…

C++ STL库详解:容器适配器stack和queue的结构及功能

一、stack 1.1stack的介绍 1. stack是一种容器适配器&#xff0c;专门用在具有后进先出操作的上下文环境中&#xff0c;其删除只能从容器的一端进行元素的插入与提取操作。 2. stack是作为容器适配器被实现的&#xff0c;容器适配器即是对特定类封装作为其底层的容器&#xf…

图数据库(neo4j)在工业控制中的应用

图模型 事物的模型中&#xff0c;除了它自身的某些特征之外&#xff0c;还包括它与其它事物的关系特征&#xff0c;例如一个学生的属性包括姓名&#xff0c;性别&#xff0c;年龄等属性&#xff0c;同时&#xff0c;他还有许多关系属性&#xff0c;比如他属于哪一个院系&#x…

修改照片尺寸好用的工具,分享4款!

在数字时代&#xff0c;照片已成为我们生活的一部分&#xff0c;而如何调整照片尺寸以满足不同的需求&#xff0c;则显得至关重要。今天&#xff0c;我们就来探讨那些可以修改照片尺寸的工具&#xff0c;让你轻松应对各种尺寸需求。 茄子水印相机 这是一款功能强大、操作简单的…

MacBook有必要装清理软件吗?CleanMyMac X v4.14.6 直装特别版 附安装教程

MacBook是苹果公司的一款高端笔记本电脑&#xff0c;但是&#xff0c;随着使用时间的增长&#xff0c;MacBook也会出现一些问题&#xff0c;比如运行缓慢、卡顿、垃圾文件堆积、磁盘空间不足等。这些问题不仅影响了用户的使用体验&#xff0c;也可能对MacBook的寿命和安全性造成…

已经购买了阿里云服务器ECS,如何在上面部署幻兽帕鲁服务器?(一键安装非常简单)

很多人都知道阿里云可以支持一键购买并部署幻兽帕鲁服务器&#xff0c;不需要你进行任何配置&#xff0c;也不用你登录服务器&#xff0c;通过查看和管理计算巢面板就可以了&#xff0c;直接就可以开玩了。但是如果你已经有了一台阿里云服务器ECS那么该怎么去搭建幻兽帕鲁服务器…

Centos 内存和硬盘占用情况以及top作用

目录 只查看内存使用情况&#xff1a; 内存使用排序取前5个&#xff1a; 硬盘占用情况 定位占用空间最大目录 top查看cpu及内存使用信息 前言-与正文无关 生活远不止眼前的苦劳与奔波&#xff0c;它还充满了无数值得我们去体验和珍惜的美好事物。在这个快节奏的世界中&…

c++类继承

一、继承的规则 &#xff08;1&#xff09;基类成员在派生类中的访问权限不得高于继承方式中指定的权限。例如&#xff0c;当继承方式为protected时&#xff0c;那么基类成员在派生类中的访问权限最高也为protected&#xff0c;高于protected会降级为protected&#xff0c;但低…

通讯基本概念

通信的方式有多种&#xff0c;按数据传输方式可分为串行通讯和并行通信&#xff1b;按通信数据同步方式可分为同步通信和异步通信&#xff1b;按数据通信的方向可分为 一、串行通信和并行通信 串行通信&#xff1a;设备之间通过少量的数据信号线&#xff08;一般是8根以下&am…

STM32 自学笔记 学习笔记 一

起源&#xff0c;A7,A9,M3&#xff0c;原来弄了A9的TQ2440&#xff0c;结果还得来重新熟悉下32函数JLINK使用SW方式&#xff0c;本来可以下载&#xff0c;但是一根线掉了重新上去&#xff0c;就出各种跟线无关问题&#xff0c;干脆把32断了重新接&#xff0c;结果就成功了&…

Linux权限【超详细】

&#x1f4d9; 作者简介 &#xff1a;RO-BERRY &#x1f4d7; 学习方向&#xff1a;致力于C、C、数据结构、TCP/IP、数据库等等一系列知识 &#x1f4d2; 日后方向 : 偏向于CPP开发以及大数据方向&#xff0c;欢迎各位关注&#xff0c;谢谢各位的支持 目录 扩展知识&#xff1a…

初识webpack(一)概念、入口配置、输出配置、loader等

目录 (一)概念 webpack的依赖图 (二)webpack的基本使用 (三)webpack的配置文件 1.入口(entry)配置 2.输出(output)配置 (三)loader 1.css文件处理 (1)安装css-loader和style-loader (2)在webpack.config.js中配置loader 2.less文件处理 3.postcss的使用 (1)安装…

深入理解K均值算法:Python中的应用与实践

目录 写在开头1. K均值算法基础1.1 什么是K均值算法&#xff1f;1.2 K均值算法的工作原理1.3 算法的优势与局限性 2. K均值算法的实现步骤2.1 初始聚类中心的选择方法2.1.1 随机选择初始中心点2.1.2 K均值算法 2.2 数据点与聚类中心的距离计算2.2.1 欧氏距离计算2.2.2 曼哈顿距…

MySQL-----约束

目录​​​​​ 约束 一 主键约束 1-1 操作-添加单列主键 1-2 操作-添加多列主键 1-3 修改表结构添加主键 1-4 删除主键约束 二 自增长约束 2-1 指定自增长字段的初始值 2-2 删除自增列 三 非空约束 3-1 创建非空约束 3-2 删除非空约束 四 唯一约束…

寒假作业2月4号

第三章 类与构造函数 一&#xff0e;选择题 1、下列不能作为类的成员的是&#xff08;B&#xff09; A. 自身类对象的指针 B. 自身类对象 C. 自身类对象的引用 D. 另一个类的对象 2、假定AA为一个类&#xff0c;a()为该类公有的函数成员&#xff0c;x为该类的一个对象&am…

SpringCloud + Nacos环境下抽取Feign独立模块并支持MultipartFile

文章目录 一、前提条件和背景1. 前提2. 背景 二、Feign模块1. 依赖引入2. application.yaml配置3. 扩展支持MultipartFile4. 将media-api注册到feign 三、Media模块四、Content模块1. 引入依赖2. 启用FeignClient3. 测试 五、需要澄清的几点 一、前提条件和背景 1. 前提 已经…

Axure RP9原型设计工具使用记录:实际应用及问题记录

Axure RP9使用记录二 &#x1f4da;第三章 实际应用&#x1f4d7;快速归位00坐标&#x1f4d7;动态菜单&#x1f4d7;填充图片&#x1f4d7;下拉框联动&#x1f4d7;单选框&#x1f4d7;全局变量 ⁉️问题记录❓问题一&#xff1a;菜单不显示❗解决方式&#xff1a;调整菜单元件…

深入Spring MVC的工作流程

深入Spring MVC的工作流程 在Spring MVC的面试问题中&#xff0c;常常被询问到的一个问题。Spring MVC的程序中&#xff0c;HTTP请求是如何从开始到结束被处理的。为了研究这个问题&#xff0c;我们将需要深入学习一下Spring MVC框架的核心过程和工作流程。 1. 启动请求生命周…

【UE5 C++】超详细虚幻C++零基础学习教程

B站免费教程&#xff0c;虚幻C零基础教学入门级视频&#xff0c;帮助大家学习虚幻C。 视频地址&#xff1a;【虚幻5】UE5C零基础全网全流程开发从入门到进阶教程合集&#xff08;持续跟新中&#xff09;_哔哩哔哩_bilibili 课程介绍视频如下 【虚幻5】UE5C零基础全网全流程开…

[python]基于LSTR车道线实时检测onnx部署

【框架地址】 https://github.com/liuruijin17/LSTR 【LSTR算法介绍】 LSTR车道线检测算法是一种用于识别和定位车道线的计算机视觉算法。它基于图像处理和机器学习的技术&#xff0c;通过对道路图像进行分析和处理&#xff0c;提取出车道线的位置和方向等信息。 LSTR车道线…