使用正则表达式搜索纯文本数据的 6 个最佳 CLI 工具
本文介绍了一些用于在文本文件中搜索匹配字符串或模式的最佳命令行工具。这些工具通常与正则表达式(缩写为REGEX)一起使用,正则表达式是用于描述搜索模式的唯一字符串。
1.grep 命令
首先是grep 实用工具——是Global Regular Expression Print的首字母缩写,是一个强大的命令行工具,在搜索文件中的特定字符串或模式时会派上用场。
默认情况下,Grep随现代 Linux 发行版一起提供,让您可以灵活地返回各种搜索结果。使用 grep,您可以执行多种功能,例如:
在文件中搜索字符串或匹配模式。
在 Gzip 压缩文件中搜索字符串或匹配模式。
计算字符串匹配的数量。
打印包含字符串或模式的行号。
递归搜索目录中的字符串。
执行反向搜索(即显示与搜索条件不匹配的字符串结果)。
搜索字符串时忽略区分大小写。
使用grep命令的语法非常简单:
$ grep 模式文件
例如,要在文件中搜索字符串“ Linux ”,例如hello.txt,同时忽略区分大小写,请运行以下命令:
$ grep -i Linux hello.txt
在文件中搜索字符串
在文件中搜索字符串
要获得更多可以与grep 一起使用的选项,只需阅读我们的文章示例更高级的 grep 命令示例。
2.sed命令
Sed - Stream Editor 的缩写- 是另一个有用的命令行工具,用于操作文本文件中的文本。Sed 以非交互方式搜索、过滤和替换给定文件中的字符串。
默认情况下,sed命令将输出打印到STDOUT(标准输出),这意味着执行结果打印在终端上,而不是保存在文件中。
sed 命令调用如下:
$ sed -OPTIONS 命令 [要编辑的文件]
例如,要将“ Unix ”的所有实例替换为“ Linux ”,请调用以下命令:
$ sed ‘s/Unix/Linux’ hello.txt
替换文件中的字符串
替换文件中的字符串
如果您想重定向输出而不是在终端上打印它,请使用( > )如图所示的重定向标志。
$ sed ‘s/Unix/Linux’ hello.txt > output.txt
将输出重定向到文件
将输出重定向到文件
命令的输出将保存到output.txt文件中,而不是打印在屏幕上。
要查看更多可以使用的选项,请再次查看手册页。
$ man sed
3. 确认命令
Ack是一个用 Perl 编写的快速且可移植的命令行工具。Ack被认为是grep 实用程序的友好替代品,并且以视觉上吸引人的方式输出结果。
Ack命令在文件或目录中搜索包含搜索条件匹配项的行。然后突出显示行中的匹配字符串。
Ack具有根据文件扩展名区分文件的能力,并且在一定程度上根据文件中的内容进行区分。
确认命令语法:
$ ack [选项] 模式 [文件…]
$ ack -f [选项] [目录…]
例如,要检查搜索词Linux,请运行:
$ ack Linux hello.txt
检查文件中的字符串
检查文件中的字符串
搜索工具非常智能,如果用户没有提供文件或目录,它会在当前目录和子目录中搜索搜索模式。
在下面的示例中,没有提供文件或目录,但 ack 已自动检测到可用文件并搜索提供的匹配模式。
$ 确认Linux
在目录中搜索字符串
在目录中搜索字符串
要在您的系统上安装ack,请运行以下命令:
$ sudo apt install ack-grep [在 Debian/Ubuntu 上]
$ sudo dnf install ack-grep [在 CentOS/RHEL 上]
4. awk 命令
awk是一种成熟的脚本语言,也是一种文本处理和数据操作工具。它搜索包含搜索模式的文件或程序。找到字符串或模式后, awk对匹配项或行执行操作,并将结果打印在STDOUT 上。
在AWK图案花括号之间封入而整个程序被封闭在单引号。
让我们举一个最简单的例子。假设您正在打印系统的日期,如下所示:
$日期
检查 Linux 系统日期
检查 Linux 系统日期
假设您只想打印第一个值,即星期几。在这种情况下,将输出通过管道传输到awk,如下所示:
$日期| awk ‘{print $1}’
要显示后续值,请使用逗号分隔它们,如下所示:
$日期| awk ‘{print $1,$2}’
上面的命令将显示星期几和月份的日期。
awk 命令示例
awk 命令示例
要获得更多可用于awk 的选项,只需阅读我们的awk 命令系列。
- 银色搜索者
该银搜索类似一个跨平台的开源和代码搜索工具来确认,但对速度的重视。它使您可以轻松地在尽可能短的时间内搜索文件中的特定字符串:
句法:
$ ag OPTIONS search_pattern /path/to/file
例如,要在文件hello.txt 中搜索字符串“ Linux ”,请调用以下命令:
$ ag Linux hello.txt
在文件中查找字符串
在文件中查找字符串
有关其他选项,请访问手册页:
$ man ag
6.Ripgrep
最后,我们有ripgrep命令行工具。Ripgrep是一个用于搜索正则表达式模式的跨平台实用程序。它比前面提到的所有搜索工具都要快得多,并且递归搜索目录以查找匹配模式。在速度和性能方面,没有其他工具比Ripgrep 更出色。
默认情况下,ripgrep将跳过二进制文件/隐藏文件和目录。另外,请注意,默认情况下它不会搜索被.gitignore/.ignore/.rgignore文件忽略的文件。
Ripgrep还允许您搜索特定的文件类型。例如,要将搜索限制为Javascript文件,请运行:
$ rg -Tsj
使用 ripgrep 的语法非常简单:
$ rg [选项] 模式 [路径…]
例如。要在位于当前目录内的文件中搜索字符串’Linux’ 的实例,请运行以下命令:
$ rg Linux
在文件中搜索字符串
在文件中搜索字符串
要在您的系统上安装ripgrep,请运行以下命令:
$ sudo apt install ripgrep [在Debian/Ubuntu 上]
$ sudo pacman -S ripgrep [在Arch Linux 上]
$ sudo zypper install ripgrep [在OpenSuse 上]
$ sudo dnf install ripgrep [在CentOS/RHEL/Fedora 上]
有关其他选项,请访问手册页:
$ man rg
这些是一些最广泛使用的命令行工具,用于在 Linux 中搜索、过滤和操作文本。如果您觉得我们遗漏了其他工具,请在评论部分告诉我们。