阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

grep 命令的 12 个实例

295次阅读
没有评论

共计 2986 个字符,预计需要花费 8 分钟才能阅读完成。

你是否遇到过需要在文件中查找一个特定的字符串或者样式,但是不知道从哪儿开始?那么, 就请 grep 来帮你吧。

grep 命令的 12 个实例

grep是每个 Linux 发行版都预装的一个强有力的文件模式搜索工具。无论何种原因,如果你的系统没有预装它的话,你可以很容易的通过系统的包管理器来安装它(Debian/Ubuntu系中的 apt-get 和 RHEl/CentOS/Fedora 系中的yum)。

$ sudo apt-get install grep #Debian/Ubuntu $ sudo yum install grep #RHEL/CentOS/Fedora

我发现使用现实世界中的真实例子让你投身其中是让你接触 grep 命令的最容易方式。

1. 搜索和寻找文件

假设你已经在你的电脑上安装了一个全新的 Ubuntu,然后你打算卸载 Python。你浏览网页寻找教程,但是你发现存在两个不同版本的Python 在使用,而你不知道你的 Ubuntu 安装器到底在你的系统中安装了哪个版本的 Python,也不知道它安装了哪些模块。解决这个烦恼只需简单的运行以下命令:

$ sudo dpkg -l | grep -i python
输出例子
ii python2.7 2.7.3-0ubuntu3.4 Interactive high-level object-oriented language (version 2.7)
 ii python2.7-minimal 2.7.3-0ubuntu3.4 Minimal subset of the Python language (version 2.7)
 ii python-openssl 0.12-1ubuntu2.1 Python wrapper around the OpenSSL library
 ii python-pam 0.4.2-12.2ubuntu4 A Python interface to the PAM library

首先,我们运行 dpkg -l 列出你系统上安装的.deb 包。接着,我们使用管道将输出结果传输给命令 grep -i python,这一步可以简单解释为把结果传输给 grep 然后过滤出所有含有 python 的项,并返回结果。–i 选项用于忽略大小写, 因为 grep 是大小写敏感的。使用选项-i 是个好习惯,除非你打算进行更细节的搜索。

2. 搜索和过滤文件

grep 还可以在一个或多个文件里用于搜索和过滤。让我们来看一个这样的情景:

你的 Apache 网页服务器 出现了问题,你不得不从许多专业网站里找一个发帖询问。好心回复你的人让你粘贴上来你的 /etc/apache2/sites-available/default-ssl 文件内容。假如你能移除掉所有的注释行,那么对你,对帮你的人,以及所有阅读该文件的人,不是更容易发现问题吗?你当然可以很容易的做到!只需这样做就可以了:

$ sudo grep -v "#" /etc/apache2/sites-available/default-ssl

选项 -v 是告诉 grep 命令反转它的输出结果,意思就是不输出匹配的项,做相反的事,打印出所有不匹配的项。这个例子中,有 # 的是注释行(译注:其实这个命令并不准确,包含“#”的行不全是注释行。关于如何精确匹配注释行,可以了解更多的关于正则表达式的内容。)。

3. 找出所有的 mp3 文件

grep命令对于过滤来自于标准输出的结果非常有用。例如,假设你的一个文件夹里面全是各种格式的音乐文件。你要找出艺术家 jayZ 的所有 mp3 格式的音乐文件,里面也不要有任何混合音轨。使用 find 命令再结合管道使用 grep 就可以完成这个魔法:

$ sudo find . -name ".mp3" | grep -i JayZ | grep -vi "remix"

在这个例子中,我们使用 find 命令打印出所有以 .mp3 为后缀名的文件,接着将其使用管道传递给 grep - i 过滤和打印出名字为“JayZ”的文件, 再使用管道传送给 grep -vi 以便过滤掉含有“remix”的项。

  • 35 个 Linux 中 find 命令的实践例子
4. 在搜索字符串前面或者后面显示行号

另外两个选项是 - A 和 - B 之间的切换,是用以显示匹配的行以及行号,分别控制在字符串前或字符串后显示的行数。Man 页给出了更加详细的解释,我发现一个记忆的小窍门:-A=after、-B=before。

$ sudo ifconfig | grep -A 4 etho $ sudo ifconfig | grep -B 2 UP
5. 在匹配字符串周围打印出行号

grep 命令的 -C 选项和例 4 中的很相似,不过打印的并不是在匹配字符串的前面或后面的行,而是打印出两个方向都匹配的行(译注:同上面的记忆窍门一样:-C=center,以此为中心):

$ sudo ifconfig | grep -C 2 lo
6. 计算匹配项的数目

这个功能类似于将 grep 输出的结果用管道传送给计数器(wc程序),grep 内建的选项可以达到同样的目的:

$ sudo ifconfig | grep -c inet6
7. 按给定字符串搜索文件中匹配的行号

当你在编译出错时需要调试时,grep命令的 -n 选项是个非常有用的功能。它能告诉你所搜索的内容在文件的哪一行:

$ sudo grep -n "main" setup.py
8. 在所有目录里递归的搜索

假若你要在当前文件夹里搜索一个字符串,而当前文件夹里又有很多子目录,你可以指定一个 -r 选项以便于递归的搜索:

$ sudo grep -r“function”*
9. 进行精确匹配搜索

传递 -w 选项给 grep 命令可以在字符串中进行精确匹配搜索(译注:包含要搜索的单词,而不是通配)。例如,像下面这样输入:

$ sudo ifconfig | grep -w“RUNNING”

将打印出含有引号内匹配项的行。另外,你还可以试一下这个:

$ sudo ifconfig | grep -w“RUN”

搜索这个匹配项时,若搜索的东西里面没有这样的一个单独的单词,将什么也不会返回。

10. 在 Gzip 压缩文件中搜索

我们还要关注一下 grep 的衍生应用。第一个是 zgrep,这个与 zcat 很相似,可以用于gzip 压缩过的文件。它有与 grep 相似的命令选项,使用方式也一样:

$ sudo zgrep -i error /var/log/syslog.2.gz
11. 在文件中匹配正则表达式

egrep是另一个衍生应用,代表着“扩展全局正则表达式”。它可以识别更多的正则表达式元字符,例如 at + ? | 和()。在搜索源代码文件时,egrep 是一个非常有用的工具,还有其他的一些零碎代码文件的搜索需要,使得这样的搜索能力成为必需。可以在 grep 命令中使用选项-E 来启用它。

$ sudo grep -E
12. 搜索一个固定匹配字符串

fgrep用于在一个文件或文件列表中搜索固定样式的字符串。功能与 grep - F 同。fgrep的一个通常用法为传递一个含有样式的文件给它:

这仅仅是 grep 命令的开始,你可能已经注意到,它对于实现各种各样的需求简直是太有用了。除了这种我们运行的这种只有一行的命令,grep 还可以写成 cron 任务或者自动的 shell 脚本 去执行。保持好奇心,试验一下 man 页的各个选项,为实现你的目的写出一些 grep 表达式 吧。

阿里云 2 核 2G 服务器 3M 带宽 61 元 1 年,有高配

腾讯云新客低至 82 元 / 年,老客户 99 元 / 年

代金券:在阿里云专用满减优惠券

正文完
星哥玩云-微信公众号
post-qrcode
 0
星锅
版权声明:本站原创文章,由 星锅 于2024-07-24发表,共计2986字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中

星哥玩云

星哥玩云
星哥玩云
分享互联网知识
用户数
4
文章数
19351
评论数
4
阅读量
8005152
文章搜索
热门文章
星哥带你玩飞牛NAS-6:抖音视频同步工具,视频下载自动下载保存

星哥带你玩飞牛NAS-6:抖音视频同步工具,视频下载自动下载保存

星哥带你玩飞牛 NAS-6:抖音视频同步工具,视频下载自动下载保存 前言 各位玩 NAS 的朋友好,我是星哥!...
星哥带你玩飞牛NAS-3:安装飞牛NAS后的很有必要的操作

星哥带你玩飞牛NAS-3:安装飞牛NAS后的很有必要的操作

星哥带你玩飞牛 NAS-3:安装飞牛 NAS 后的很有必要的操作 前言 如果你已经有了飞牛 NAS 系统,之前...
我把用了20年的360安全卫士卸载了

我把用了20年的360安全卫士卸载了

我把用了 20 年的 360 安全卫士卸载了 是的,正如标题你看到的。 原因 偷摸安装自家的软件 莫名其妙安装...
再见zabbix!轻量级自建服务器监控神器在Linux 的完整部署指南

再见zabbix!轻量级自建服务器监控神器在Linux 的完整部署指南

再见 zabbix!轻量级自建服务器监控神器在 Linux 的完整部署指南 在日常运维中,服务器监控是绕不开的...
飞牛NAS中安装Navidrome音乐文件中文标签乱码问题解决、安装FntermX终端

飞牛NAS中安装Navidrome音乐文件中文标签乱码问题解决、安装FntermX终端

飞牛 NAS 中安装 Navidrome 音乐文件中文标签乱码问题解决、安装 FntermX 终端 问题背景 ...
阿里云CDN
阿里云CDN-提高用户访问的响应速度和成功率
随机文章
星哥带你玩飞牛NAS-16:飞牛云NAS换桌面,fndesk图标管理神器上线!

星哥带你玩飞牛NAS-16:飞牛云NAS换桌面,fndesk图标管理神器上线!

  星哥带你玩飞牛 NAS-16:飞牛云 NAS 换桌面,fndesk 图标管理神器上线! 引言 哈...
星哥带你玩飞牛NAS-1:安装飞牛NAS

星哥带你玩飞牛NAS-1:安装飞牛NAS

星哥带你玩飞牛 NAS-1:安装飞牛 NAS 前言 在家庭和小型工作室场景中,NAS(Network Atta...
自己手撸一个AI智能体—跟创业大佬对话

自己手撸一个AI智能体—跟创业大佬对话

自己手撸一个 AI 智能体 — 跟创业大佬对话 前言 智能体(Agent)已经成为创业者和技术人绕...
升级自动部署更新SSL证书系统、申请godaddy的APIKEY

升级自动部署更新SSL证书系统、申请godaddy的APIKEY

升级自动部署更新 SSL 证书系统、申请 godaddy 的 APIKEY 公司之前花钱购买的 ssl 证书快...
【1024程序员】我劝你赶紧去免费领一个AWS、华为云等的主机

【1024程序员】我劝你赶紧去免费领一个AWS、华为云等的主机

【1024 程序员】我劝你赶紧去免费领一个 AWS、华为云等的主机 每年 10 月 24 日,程序员们都会迎来...

免费图片视频管理工具让灵感库告别混乱

一言一句话
-「
手气不错
12.2K Star 爆火!开源免费的 FileConverter:右键一键搞定音视频 / 图片 / 文档转换,告别多工具切换

12.2K Star 爆火!开源免费的 FileConverter:右键一键搞定音视频 / 图片 / 文档转换,告别多工具切换

12.2K Star 爆火!开源免费的 FileConverter:右键一键搞定音视频 / 图片 / 文档转换...
一句话生成拓扑图!AI+Draw.io 封神开源组合,工具让你的效率爆炸

一句话生成拓扑图!AI+Draw.io 封神开源组合,工具让你的效率爆炸

一句话生成拓扑图!AI+Draw.io 封神开源组合,工具让你的效率爆炸 前言 作为天天跟架构图、拓扑图死磕的...
安装并使用谷歌AI编程工具Antigravity(亲测有效)

安装并使用谷歌AI编程工具Antigravity(亲测有效)

  安装并使用谷歌 AI 编程工具 Antigravity(亲测有效) 引言 Antigravity...
星哥带你玩飞牛NAS-13:自动追番、订阅下载 + 刮削,动漫党彻底解放双手!

星哥带你玩飞牛NAS-13:自动追番、订阅下载 + 刮削,动漫党彻底解放双手!

星哥带你玩飞牛 NAS-13:自动追番、订阅下载 + 刮削,动漫党彻底解放双手! 作为动漫爱好者,你是否还在为...
你的云服务器到底有多强?宝塔跑分告诉你

你的云服务器到底有多强?宝塔跑分告诉你

你的云服务器到底有多强?宝塔跑分告诉你 为什么要用宝塔跑分? 宝塔跑分其实就是对 CPU、内存、磁盘、IO 做...