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

简介: 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

首先,我们运行 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 .最后以隐藏所有空行的输出。这样我们只能在终端中看到配置设置。

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

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"

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

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

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

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

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

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

grep -E

12. 搜索固定模式字符串

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

fgrep –f file_full_of_patterns.txt file_to_search.txt

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

相关文章
|
3天前
|
Linux
在 Linux 系统中,“cd”命令用于切换当前工作目录
在 Linux 系统中,“cd”命令用于切换当前工作目录。本文详细介绍了“cd”命令的基本用法和常见技巧,包括使用“.”、“..”、“~”、绝对路径和相对路径,以及快速切换到上一次工作目录等。此外,还探讨了高级技巧,如使用通配符、结合其他命令、在脚本中使用,以及实际应用案例,帮助读者提高工作效率。
17 3
|
3天前
|
监控 安全 Linux
在 Linux 系统中,网络管理是重要任务。本文介绍了常用的网络命令及其适用场景
在 Linux 系统中,网络管理是重要任务。本文介绍了常用的网络命令及其适用场景,包括 ping(测试连通性)、traceroute(跟踪路由路径)、netstat(显示网络连接信息)、nmap(网络扫描)、ifconfig 和 ip(网络接口配置)。掌握这些命令有助于高效诊断和解决网络问题,保障网络稳定运行。
15 2
|
3天前
|
安全 网络协议 Linux
本文详细介绍了 Linux 系统中 ping 命令的使用方法和技巧,涵盖基本用法、高级用法、实际应用案例及注意事项。
本文详细介绍了 Linux 系统中 ping 命令的使用方法和技巧,涵盖基本用法、高级用法、实际应用案例及注意事项。通过掌握 ping 命令,读者可以轻松测试网络连通性、诊断网络问题并提升网络管理能力。
18 3
|
6天前
|
Linux
在 Linux 系统中,`find` 命令是一个强大的文件查找工具
在 Linux 系统中,`find` 命令是一个强大的文件查找工具。本文详细介绍了 `find` 命令的基本语法、常用选项和具体应用示例,帮助用户快速掌握如何根据文件名、类型、大小、修改时间等条件查找文件,并展示了如何结合逻辑运算符、正则表达式和排除特定目录等高级用法。
30 6
|
7天前
|
监控 Linux 开发者
如何在 Linux 中优雅的使用 head 命令,用来看日志简直溜的不行
`head` 命令是 Linux 系统中一个非常实用的工具,用于快速查看文件的开头部分内容。本文介绍了 `head` 命令的基本用法、高级用法、实际应用案例及注意事项,帮助用户高效处理文件和日志,提升工作效率。
21 7
|
7天前
|
监控 Linux Perl
Linux 命令小技巧:显示文件指定行的内容
在 Linux 系统中,处理文本文件是一项常见任务。本文介绍了如何使用 head、tail、sed 和 awk 等命令快速显示文件中的指定行内容,帮助你高效处理文本文件。通过实际应用场景和案例分析,展示了这些命令在代码审查、日志分析和文本处理中的具体用途。同时,还提供了注意事项和技巧,帮助你更好地掌握这些命令。
21 4
|
6天前
|
缓存 网络协议 Linux
Linux ip命令常用操作
Linux的 `ip`命令是一个强大且灵活的网络管理工具,能够执行从基本的网络接口配置到高级的路由和VLAN管理等多种操作。通过熟练掌握这些常用操作,用户可以更加高效地管理和配置Linux系统的网络环境。无论是在日常管理还是故障排除中,`ip`命令都是必不可少的工具。
11 2
|
11月前
|
Linux Go 数据安全/隐私保护
linux常用命令手册 用户管理useradd 文件权限管理chmod 搜索管理find grep
linux常用命令手册 用户管理useradd 文件权限管理chmod 搜索管理find grep
99 2
|
2月前
|
机器学习/深度学习 存储 Linux
linux中强大且常用命令:find、xargs、grep
linux中强大且常用命令:find、xargs、grep
99 9
|
6月前
|
Unix Linux Shell
linux命令之grep
linux命令之grep
60 2