本指南介绍了一些最佳的命令行工具,这些工具可用于搜索文本文件中的匹配字符串或模式。这些工具通常与正则表达式(REGEX)一起使用,正则表达式是描述搜索模式的特殊字符串。
不多说了,让我们开始吧。
1. Grep命令
首先是grep实用工具 – 它是Global Regular Expression Print的首字母缩写,是一种强大的命令行工具,在搜索文件中的特定字符串或模式时非常方便。
在缺省情况下,Grep随现代Linux发行版一起发布,可让您灵活地返回各种搜索结果。使用grep,您可以执行各种功能,例如:
- 搜索文件中的字符串或匹配模式。
- 在压缩文件中搜索字符串或匹配模式。
- 计算字符串匹配数。
- 打印包含字符串或模式的行号。
- 递归搜索目录中的字符串。
- 执行反向搜索(即显示不符合搜索条件的字符串的结果)。
- 搜索字符串时忽略大小写。
使用grep命令的语法非常简单:
$ grep pattern FILE
例如,要在忽略大小写的情况下在文件中搜索字符串“ LinuxMi ”(例如linuxmi.com.py),请运行以下命令:
linuxmi@linuxmi:~/www.linuxmi.com$ grep -i LinuxMi linuxmi.com.py

要获得可以与grep一起使用的更多选项,只需阅读我们的文章,其中包含更多高级grep命令示例示例。
2. sed命令
Sed(Stream Editor的缩写)是另一个有用的命令行工具,一个功能十分强大的用于文本处理的流编辑器。sed以非交互方式搜索,过滤和替换给定文件中的字符串。
默认情况下,sed命令将输出打印到STDOUT(Standard Out),这意味着执行的结果将打印在终端上,而不是保存在文件中。
sed命令的调用方式如下:
$ sed -OPTIONS command [ file to be edited ]
例如,要将“ window ”的所有实例替换为“ linux ”,请调用以下命令:
linuxmi@linuxmi:~/www.linuxmi.com$ sed 's/window/linux/' linuxmi.com.py

替换文件中的字符串
如果要重定向输出而不是在终端上打印输出,请使用( > )
如图所示的重定向符号。
linuxmi@linuxmi:~/www.linuxmi.com$ sed 's/window/linux/' linuxmi.com.py > 300.ai.py

命令的输出将被保存到300.ai.py文件,而不是在屏幕上打印。
要查看更多可以使用的选项,请再次查看手册页。
$ man sed
3.Ack命令
Ack是用Perl编写的快速且可移植的命令行工具。Ack被认为是grep实用程序的友好替代品,并以一种视觉上吸引人的方式输出结果。
Ack命令在文件或目录中搜索包含与搜索条件匹配的行。然后高亮显示各行中的匹配字符串。
Ac可以根据文件扩展名区分文件,在一定程度上也可以区分文件中的内容。
Ack命令语法:
$ ack [options] PATTERN [FILE...] $ ack -f [options] [DIRECTORY...]
例如,要检查搜索词LinuxMi,加 -i 不区分大小写,请运行:
linuxmi@linuxmi:~/www.linuxmi.com$ ack LinuxMi linuxmi.com.py

搜索工具非常智能,如果用户未提供文件或目录,它会在当前目录和子目录中搜索搜索模式。
在下面的示例中,没有提供文件或目录,但是ack自动检测到了可用文件并搜索了提供的匹配模式。
linuxmi@linuxmi:~/www.linuxmi.com$ ack LinuxMi

要在系统上安装ack,请运行以下命令:
$ sudo apt install ack-grep [在Debian/Ubuntu上] $ sudo dnf install ack-grep [在CentOS/RHEL上]
4. Awk命令
Awk是一种成熟的脚本语言,也是一种文本处理和数据处理工具。它搜索包含搜索模式的文件或程序。找到字符串或模式时, awk对匹配项或行进行操作,并将结果打印在STDOUT。
在AWK 花括号之间封入而整个程序被封闭在单引号中。
让我们以最简单的例子为例。假设您正在打印系统日期,如下所示:
linuxmi@linuxmi:~/www.linuxmi.com$ date

假设您只想打印第一个值,即2020年。在这种情况下,将输出通过管道传输到awk中,如下所示:
linuxmi@linuxmi:~/www.linuxmi.com$ date | awk '{print $1}'
要显示后续值,请使用逗号分隔它们,如下所示:
linuxmi@linuxmi:~/www.linuxmi.com$ date | awk '{print $1,$2}' 2020年 08月 linuxmi@linuxmi:~/www.linuxmi.com$ date | awk '{print $1,$2,$3}' 2020年 08月 11日
上面的命令将显示几月几日。

Awk命令示例
5.Silver Searcher搜索工具
silver searcher是一个跨平台的开源搜索工具,简称ag,类似于ack,但侧重于速度。它使您很容易在最短的时间内搜索一个特定的字符串文件。
安装:linuxmi@linuxmi:~/www.linuxmi.com$ sudo apt install silversearcher-ag
语法:
$ ag OPTIONS search_pattern /path/to/file
例如,要在文件linuxmi.com.py中搜索字符串“ LinuxMi ”,请调用以下命令:
$ ag LinuxMi linuxmi.com.py

在文件中查找字符串
有关其他选项,请访问手册页:
$ man ag
以上是在Linux中用于搜索,过滤和处理文本的最广泛使用的命令行工具。如果您认为我们还没有列举出其他工具,请在评论部分让我们知道。谢谢。