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 多平台发布

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

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

相关文章

Django的web框架Django Rest_Framework精讲(一)

文章目录 Django Rest_Framework1. DRF介绍2.DRF特点3.环境安装与配置&#xff08;1&#xff09;DRF需要以下依赖&#xff08;2&#xff09;创建django项目 4.序列化器的使用&#xff08;1&#xff09;创建序列化器 5. 反序列化器使用 Django Rest_Framework 1. DRF介绍 Djan…

选择排序、冒泡排序----C语言数据结构

目录 引言 1.选择排序的实现1.1选择排序的时间复杂度2.冒泡排序的实现2.1冒泡排序的时间复杂度分析及优缺 引言 选择排序&#xff08;Selection Sort&#xff09;是一种简单直观的排序算法&#xff0c;它的基本思想是每次从未排序的元素中选择最小&#xff08;或最大&#xff…

VitePress-08-文档中代码组的使用

什么是代码组 代码组 : 就是代码块的集合。一个代码组中可以包含多个代码块。 效果 &#xff1a; 用页签的形式将不同的代码块分开展示。 代码组的语法格式 代码组的语法格式较为固定&#xff0c;如下 &#xff1a; ::: code-group代码块1的类型 [代码块1展示的页签名称]代码块…

全新 鸿蒙系统

一&#xff0c; 开发框架 基础 二&#xff0c; 官网地址 文档开发&#xff1a;华为HarmonyOS智能终端操作系统官网 | 应用设备分布式开发者生态 三&#xff0c;基础了解 鸿蒙系统是基于 js 和 ts 衍生出来的一个东西 要学 arkts 就要学习 js 和 ts 语法 四&#xff0c…

Avalonia学习(二十二)-数据库操作端

开始项目式的例子&#xff0c;但是不方便给大家贴代码了。 内容很多&#xff0c;只能演示一个界面&#xff0c;例子上传。 我不擅长界面美化和配色&#xff0c;有兴趣的可以继续完善&#xff0c;当前实现mysql。 最近所有样例的地址&#xff1a; GitHub - jinyuttt/Avalonia…

基于条纹投影的三维形貌与形变测量技术研究

▒▒本文目录▒▒ 一、 引言二、基于条纹投影轮廓术的形变测量实验2.1 实验光路2.2 实验结果 三、参考文献四、结论五、软硬件系统开发六、交流与合作 一、 引言 作为一种典型的三维形貌重建方法&#xff0c;条纹投影轮廓测量术&#xff08;Fringe Projection Profilometry&am…

java入门、环境配置及其特点介绍

目录 一、java语言的重要特点 二、java开发工具包&#xff08;JDK&#xff09;及其环境配置 三、java入门代码 四、Java运行机制 五、java学习方法 一、java语言的重要特点 java是面向对象的Java是健壮性的。Java具有强类型机制、异常处理、垃圾的自动收集等特点java语言是跨…

炼丹师必备平台,云上训练无压力—GpuMall智算云

说回作为一个“炼丹师”在选择炼丹平台的核心需求&#xff1a;【数据传输速率快慢】or【机器租用价格性价比】or【可租用机器类型多少】or【镜像版本选择多样性】or【机器稳定性】等等 是不是以上任何一个条件&#xff0c;都可能会影响你对平台的选择呢&#xff1f;纵观市面上…

python coding with ChatGPT 打卡第16天| 二叉树:完全二叉树、平衡二叉树、二叉树的所有路径、左叶子之和

相关推荐 python coding with ChatGPT 打卡第12天| 二叉树&#xff1a;理论基础 python coding with ChatGPT 打卡第13天| 二叉树的深度优先遍历 python coding with ChatGPT 打卡第14天| 二叉树的广度优先遍历 python coding with ChatGPT 打卡第15天| 二叉树&#xff1a;翻转…

曲线拟合、多项式拟合、最小二乘法

最近在做自车轨迹预测的工作&#xff0c;遇到 曲线拟合、多项式拟合、最小二乘法这些概念有点不清晰&#xff0c; 做一些概念区别的总结&#xff1a; 曲线拟合用于查找一系列数据点的“最佳拟合”线或曲线。 大多数情况下&#xff0c;曲线拟合将产生一个函数&#xff0c;可用于…

【数据结构与算法】(7)基础数据结构之双端队列的链表实现、环形数组实现示例讲解

目录 2.6 双端队列1) 概述2) 链表实现3) 数组实现习题E01. 二叉树 Z 字层序遍历-Leetcode 103 2.6 双端队列 1) 概述 双端队列、队列、栈对比 定义特点队列一端删除&#xff08;头&#xff09;另一端添加&#xff08;尾&#xff09;First In First Out栈一端删除和添加&…

网工内推 | 金融业网络安全岗,最高40K*15薪,CISP认证优先

01 国泰产险 招聘岗位&#xff1a;资深信息安全工程师 职责描述&#xff1a; 1、负责公司云平台业务系统的安全规划设计&#xff0c;协助业务系统制定安全解决方案&#xff1b; 2、负责建立公司信息安全标准&#xff0c;制定平台安全策略&#xff0c;安全加固&#xff0c;防范…

数据可视化 pycharts实现中国各省市地图数据可视化

自用版 数据格式如下&#xff1a; 运行效果如下&#xff1a; import pandas as pd from pyecharts.charts import Map, TreeMap, Timeline, Page, WordCloud from pyecharts import options as opts from pyecharts.commons.utils import JsCode from pyecharts.globals im…

js逆向-某验3代滑块验证码分析

声明 本文仅供学习参考&#xff0c;如有侵权可私信本人删除&#xff0c;请勿用于其他途径&#xff0c;违者后果自负&#xff01; 如果觉得文章对你有所帮助&#xff0c;可以给博主点击关注和收藏哦&#xff01; 插句个人内容&#xff1a;本人最近正在找工作&#xff0c;工作城…

alibabacloud学习笔记05(小滴课堂)

高并发下的微服务存在的问题 高并发下的微服务容错方案 介绍什么是分布式系统的流量防卫兵Sentinel 微服务引入Sentinel和控制台搭建 每个服务都加上这个依赖。 启动方式&#xff1a; 讲解AliababCloud微服务整合Sentinel限流配置实操 我们在order和video模块都加上。 分别启动…

第三百零六回

文章目录 1. 概念介绍2. 思路与方法2.1 实现思路2.2 实现方法 3. 示例代码4. 内容总结 我们在上一章回中介绍了"分享三个使用TextField的细节"沉浸式状态样相关的内容&#xff0c;本章回中将介绍如何创建单例模式.闲话休提&#xff0c;让我们一起Talk Flutter吧。 1.…

回归预测 | Matlab实现POA-CNN-LSTM-Attention鹈鹕算法优化卷积长短期记忆网络注意力多变量回归预测(SE注意力机制)

回归预测 | Matlab实现POA-CNN-LSTM-Attention鹈鹕算法优化卷积长短期记忆网络注意力多变量回归预测&#xff08;SE注意力机制&#xff09; 目录 回归预测 | Matlab实现POA-CNN-LSTM-Attention鹈鹕算法优化卷积长短期记忆网络注意力多变量回归预测&#xff08;SE注意力机制&…

超时引发的牛角尖二(hystrix中的超时)

至今我都清楚记得自己负责的系统请求云上关联系统时所报的异常信息。为了解决这个异常&#xff0c;我坚持让这个关联系统的负责人查看&#xff0c;并且毫不顾忌他的嘲讽和鄙视&#xff0c;甚至无视他烦躁的情绪。不过我还是高估了自己的脸皮&#xff0c;最终在其恶狠狠地抛下“…

智能决策的艺术:探索商业分析的最佳工具和方法

文章目录 一、引言二、商业分析思维概述三、数据分析在商业实践中的应用四、如何培养商业分析思维与实践能力五、结论《商业分析思维与实践&#xff1a;用数据分析解决商业问题》亮点内容简介作者简介目录获取方式 一、引言 随着大数据时代的来临&#xff0c;商业分析思维与实…

前端小案例——滚动文本区域(HTML+CSS, 附源码)

一、前言 实现功能: 这个案例实现了一个具有滚动功能的文本区域&#xff0c;用于显示长文本内容&#xff0c;并且可以通过滚动条来查看完整的文本内容。 实现逻辑&#xff1a; 内容布局&#xff1a;在<body>中&#xff0c;使用<div>容器创建了一个类名为listen_t…