6个使用正则表达式搜索文本中内容的工具
| 本指南介绍了一些命令行工具,这些工具可用于搜索文本文件中的匹配字符串或模式。这些工具通常与正则表达式一起使用。 |
|---|
grep命令
最初出现的是grep实用工具——它被称为Global Regular Expression Print的首字母缩写,在处理文件中的特定字符串或模式方面非常高效。
例如,在不区分大小写的场景下查找文件sshd_conf.txt中的所有包含ssh字符串的行。为了实现这一目标,请执行以下操作:

想要了解更多关于grep命令的使用方式,可以查看grep的手册:man grep
sed命令
sed 是 Stream Editor 的缩写,在处理文本文件时执行操作。 sed 以一种非交互的方式从给定的文件中搜索、筛选并替换字符串。
通常情况下,默认运行sed命令会导致其输出直接发送至标准输出窗口;这表明运行后的结果显示将在终端界面显示而非被存储到文件中。
为了将文件/etc/se[linux](https://www.linuxprobe.com/ "linux")/config中的SELINUX参数从enforcing设置为disabled,请参考下面的命令:

修改之后,保存退出,重启操作系统,这样可以关闭selinux。
想要了解更多关于sed命令的使用方式,可以查看sed的手册:man sed
ack命令
使用 Perl 编写的高效且跨平台的命令行工具 Ack 被认为是 grep 的替代方案,并采用更具视觉吸引力的方式展示结果。该程序能够在文件或目录中查找符合特定搜索条件的所有行,并在发现符合条件的内容后高亮显示每行中的匹配字符串。
安装方式(Centos7系统):
例如,要在sshd_conf.txt中查找包含ssh的行,不区分大小写,请运行:

搜索出来的关键字会以高亮的方式显示出来。
该搜索工具具有高度智能化的能力。在没有用户提供具体文件或 directory 的情况下,在 current 目录及其子 directory 中进行扫描。然而,在 directories and subdirectories 中自动识别并提取了符合特定字符串匹配条件的所有 file 路径及内容。

想要了解更多关于ack命令的使用方式,可以查看ack的手册:man ack
awk命令
awk是一种功能强大的脚本语言,也被广泛应用于文本与数据处理工作中。让我们从一个简明扼要的例子入手:假设我们想打印当前系统的日期信息,并仅关注星期几这一项。在这种情况下,我们将输出结果通过标准输入管道连接至awk执行以下操作:
要显示后面的值,请使用逗号分隔它们,如下所示:

希望进一步了解awk命令的操作方法?访问以下网页获取更多信息:文章来源 新闻来源
Silver Searcher工具
Silver Searcher是一款类似于Ack的跨平台开源代码搜索工具,并且追求快速响应效率。它能够以最快的速度高效地定位文件中的特定字符串:
安装方式(Centos7):
例如,在/etc/passwd文件中搜索字符串"nologin",使用以下命令:

希望进一步了解关于Silver Searcher工具的使用方法的人,请参考ag的手册:man ag
ripgrep工具
该程序为 ripgrep 命令行工具。
这是一个用于匹配正则表达式的跨平台实用程序。
相比之前介绍的所有搜索工具, 该程序运行速度更快, 并支持通过递归目录查找符合条件的结果。
在处理效率与性能上无可匹敌
在默认设置下, ripgrep会跳过二进制文件及隐藏的文件和目录.此外, 在默认设置下, 它也不会扫描那些被.gitignore/.ignore/.rgignore标记所忽略的文件.
安装ripgrep(Centos7):
例如,要在当前目录内的文件中搜索字符串“Linux”,请运行以下命令:

想要了解更多关于ripgrep命令的使用方式,可以查看rg的手册:man rg
总结
这些是Linux中用于搜索、过滤和操作文本的最广泛使用的命令行工具。
