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.rhkb.cn/news/252238.html

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

相关文章

JavaScript运行机制

在web前端开发中&#xff0c;JavaScript无疑是一种非常重要的编程语言。它能够为网页添加动态交互功能&#xff0c;提升用户体验。然而&#xff0c;要充分发挥JavaScript的威力&#xff0c;我们需要对它的运行机制有一定的了解。 JavaScript是一种解释执行的脚本语言&#xff…

【LeetCode力扣】单调栈解决Next Greater Number(下一个更大值)问题

目录 1、题目介绍 2、解题思路 2.1、暴力破解法 2.2、经典Next Greater Number问题解法 1、题目介绍 原题链接&#xff1a;496. 下一个更大元素 I - 力扣&#xff08;LeetCode&#xff09; 示例1&#xff1a; 输入&#xff1a;nums1 [4,1,2], nums2 [1,3,4,2].输出&…

SpringSecurity(17)——OAuth2令牌管理策略

刷新令牌策略 注意&#xff1a;刷新令牌只有在授权码模式和密码模式中才有&#xff0c;对应的指定这两种模式时&#xff0c;在类型上加上refresh_token <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-se…

Prometheus 采集Oracle监控数据

前言 oracledb_exporter是一个开源的Prometheus Exporter,用于从Oracle数据库中收集关键指标并将其暴露给Prometheus进行监控和告警。它可以将Oracle数据库的性能指标转换为Prometheus所需的格式,并提供一些默认的查询和指标。 download Oracle Oracle Windows Install …

【前端web入门第四天】02 CSS三大特性+背景图

文章目录: 1. CSS三大特性 1.1继承性 1.2 层叠性 1.3 优先级 1.3.1 优先级1.3.2 优先级-叠加计算规则 2. 背景图 2.1 背景属性2.2 背景图2.3 背景图的平铺方式2.4 背景图位置2.5 背景图缩放2.6 背景图固定2.7 背景复合属性 1. CSS三大特性 1.1继承性 什么是继承性? 子级默…

2023_中国零售业人工智能行业应用 发展图谱

01 零售人工智能行业应用发展背景 02 零售人工智能行业应用发展图谱及行业应用案例 案例&#xff1a;京东云、蓝色光标、京东言犀智能服务、腾讯企点、 案例&#xff1a;淘天集团、极睿科技、百度电商数字人直播 案例&#xff1a;中国联通、云拿科技AI智能商店&#xff1b; 0…

[设计模式Java实现附plantuml源码~结构型]实现对象的复用——享元模式

前言&#xff1a; 为什么之前写过Golang 版的设计模式&#xff0c;还在重新写Java 版&#xff1f; 答&#xff1a;因为对于我而言&#xff0c;当然也希望对正在学习的大伙有帮助。Java作为一门纯面向对象的语言&#xff0c;更适合用于学习设计模式。 为什么类图要附上uml 因为很…

【Iceberg学习二】Branch和Tag在Iceberg中的应用

Iceberg 表元数据保持一个快照日志&#xff0c;记录了对表所做的更改。快照在 Iceberg 中至关重要&#xff0c;因为它们是读者隔离和时间旅行查询的基础。为了控制元数据大小和存储成本&#xff0c;Iceberg 提供了快照生命周期管理程序&#xff0c;如 expire_snapshots&#xf…

基于Vue的移动端UI框架整理

一、Vant 官方地址&#xff1a;https://youzan.github.io/vant/#/zh-CN/ 简介&#xff1a;有赞公司开发。 特性&#xff1a;60 高质量组件、90% 单元测试覆盖率、完善的中英文文档和示例、支持按需引入、支持主题定制、支持国际化、支持 TS、支持 SSR。 特别说明&#xff1…

RabbitMQ-2.SpringAMQP

SpringAMQP 2.SpringAMQP2.1.创建Demo工程2.2.快速入门2.1.1.消息发送2.1.2.消息接收2.1.3.测试 2.3.WorkQueues模型2.2.1.消息发送2.2.2.消息接收2.2.3.测试2.2.4.能者多劳2.2.5.总结 2.4.交换机类型2.5.Fanout交换机2.5.1.声明队列和交换机2.5.2.消息发送2.5.3.消息接收2.5.4…

C语言第十八弹---指针(二)

✨个人主页&#xff1a; 熬夜学编程的小林 &#x1f497;系列专栏&#xff1a; 【C语言详解】 【数据结构详解】 指针 1、const修饰指针 1.1、const修饰变量 1.2、const修饰指针变量 2、指针运算 2.1、指针- 整数 2.2、指针-指针 2.3、指针的关系运算 3、野指针 3.1、…

Stable Diffusion 模型下载:国风3 GuoFeng3

文章目录 模型介绍生成案例案例一案例二案例三案例四案例五案例六案例七案例八案例九案例十推荐提示词下载地址模型介绍 欢迎使用GuoFeng3模型 - 这是一个中国华丽古风风格模型,也可以说是一个古风游戏角色模型,具有2.5D的质感。 条目内

2024年Java面试题大全 面试题附答案详解,BTA内部面试题

基础篇 1、 Java语言有哪些特点 1、简单易学、有丰富的类库 2、面向对象&#xff08;Java最重要的特性&#xff0c;让程序耦合度更低&#xff0c;内聚性更高&#xff09; 阿里内部资料 基本类型 大小&#xff08;字节&#xff09; 默认值 封装类 6、Java自动装箱与拆箱 装箱就是…

Python中的while循环,知其然知其所以然

文章目录 while循环结构1.用循环打印1 ~ 100步骤解析2. 1 ~ 100的累加和3.死循环1. 用死循环的方法实现 1 ~ 100累加和 4. 单向循环(1)打印 一行十个小星星*(2)通过打印一个变量的形式,展现一行十个小星星(3)一行十个换色的星星 ★☆★☆★☆★☆★☆(4)用一个循环,打印十行十列…

Docker 一小时从入门到实战 —— Docker commands | Create your own image | vs VM ... 基本概念扫盲

Docker crash course 文章目录 Docker crash course1. What and Why of Docker?2.1 What2.2 What problem does it solve?2.2.1 before containers2.1.2 with containers 2. Docker vs Virtual Machines2.1 Difference2.2 Benefits 3. Install docker locally4. Images vs Co…

深入PyTorch——reshape方法和view方法的差异

深入PyTorch——reshape方法和view方法的差异 &#x1f335;文章目录&#x1f335; &#x1f333;引言&#x1f333;&#x1f333;reshape方法&#x1f333;&#x1f333;view方法&#x1f333;&#x1f333;总结&#x1f333;&#x1f333;结尾&#x1f333; &#x1f333;引言…

【数据分享】1929-2023年全球站点的逐日最低气温数据(Shp\Excel\免费获取)

气象数据是在各项研究中都经常使用的数据&#xff0c;气象指标包括气温、风速、降水、湿度等指标&#xff0c;其中又以气温指标最为常用&#xff01;说到气温数据&#xff0c;最详细的气温数据是具体到气象监测站点的气温数据&#xff01; 之前我们分享过1929-2023年全球气象站…

大数据Zookeeper--案例

文章目录 服务器动态上下线监听案例需求需求分析具体实现测试 Zookeeper分布式锁案例原生Zookeeper实现分布式锁Curator框架实现分布式锁 Zookeeper面试重点选举机制生产集群安装多少zk合适zk常用命令 服务器动态上下线监听案例 需求 某分布式系统中&#xff0c;主节点可以有…

Linux【docker 设置阿里源】

文章目录 一、查看本地docker的镜像配置二、配置阿里镜像三、检查配置 一、查看本地docker的镜像配置 docker info一般没有配置过是不会出现Registry字段的 二、配置阿里镜像 直接执行下面代码即可&#xff0c;安装1.10.0以上版本的Docker客户端都会有/etc/docker 1.建立配置…

docker部署笔记系统flatnotes

效果 安装 创建目录 mkdir -p /opt/flatnotes/data && cd /opt/flatnotes/ chmod -R 777 /opt/flatnotes/ 创建并启动容器(可以自己修改账户和密码) docker run -d \ --restart unless-stopped \ --name flatnotes \ -p "10040:8080" \ -v "/dat…