本指南介绍了一些最佳的命令行工具,这些工具可用于搜索文本文件中的匹配字符串或模式。这些工具通常与正则表达式(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命令将输出打印到STDOUTStandard 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
检查Linux系统日期

假设您只想打印第一个值,即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中用于搜索,过滤和处理文本的最广泛使用的命令行工具。如果您认为我们还没有列举出其他工具,请在评论部分让我们知道。谢谢。

发表评论

电子邮件地址不会被公开。 必填项已用*标注