Linux Grep命令的10个实用示例

grep命令提供对grep实用程序的访问权限,grep实用程序是一种功能强大的文件处理工具,用于在文本文件中查找模式。它有许多实际用例,并且肯定是最常用的Linux命令之一。本指南说明了一些具有实际用途的简单但有用的Linux grep命令。

演示示例文件

我们创建了参考文件,以帮助读者更有效地理解grep。您可以通过在终端中发出以下shell命令来创建此文件的副本。

 cat <<END >> test-file
This is a simple text file that contains
multiple strings as well as some telephone numbers
(555) 555-1234 (567) 666-2345
and email plus web addresses
[email protected]
https://google.com
ftp://mywebserver.com
END

1.在文件中查找文本

要在文件中搜索文本模式,只需运行grep后跟模式名称即可。另外,指定包含文本的文件的名称。

 grep "email" test-file

此命令将在我们的测试文件中显示包含单词email的行。您也可以使用grep在多个文件中搜索相同的文本。

 grep "example" /usr/share/dict/american-english /usr/share/dict/british-english

上面的命令在美国英语英国英语字典文件中显示example单词的所有实例。

2.查找完全匹配的单词

前面示例中说明的Linux grep命令还列出了具有部分匹配项的行。如果只需要一个单词的确切出现,请使用下面给出的命令。

 grep -w "string" test-file

grep的-w–word-regexp选项将输出限制为仅完全匹配。 Grep包含一些其他标志,这些标志也可以与默认命令一起使用。

相关: Grep是如何命名的? Grep创作背后的历史

3.忽略大小写区别

默认情况下,grep以区分大小写的方式搜索模式。但是,如果您不知道在哪种情况下预先确定模式,则可能要关闭此功能。

 grep -i "this" test-file

使用-i–ignore-case选项可关闭区分大小写的功能。

4.计算图案数量

-c标志代表count 。它显示为特定模式找到的匹配数。管理员可以使用它来检索有关系统的特定信息。

您可以使用grep来传递ps命令,以计算属于当前用户的进程。

 ps -ef | grep -c $USER

以下命令显示目录中存在的MP3文件的数量。

 ls ~/Music | grep -c .mp3

5.显示包含匹配项的行号

您可能需要查找包含特定匹配项的行号。使用grep的-n–line-number选项可实现此目的。

 cat /etc/passwd | grep -n rubaiat

此选项对于调试源代码和对日志文件进行故障排除特别有用。要显示〜/ .vimrc中用于配置Vim文本编辑器的行的所有数字,请执行以下操作:

 grep -n "set" ~/.vimrc

6.使用扩展名查找文件名

要获取〜/ Music目录中存在的所有MP3文件的列表,请执行以下操作:

 ls ~/Music/ | grep ".mp3"

您可以使用其他任何扩展名替换.mp3来查找特定文件。以下命令列出了当前工作目录中存在的所有php文件。

 ls | grep ".php"

7.在压缩文件中查找模式

Linux grep命令还可以在压缩文件中找到模式。但是,您将需要使用zgrep命令来执行此操作。首先,通过键入以下内容来创建测试文件的压缩存档:

 gzip test-file

现在,您可以在结果归档文件中搜索文本或其他模式。

 zgrep email test-file.gz

8.查找电子邮件地址

管理员还可以使用Linux grep命令列出来自文本文件的电子邮件地址。下面的示例通过搜索正则表达式模式来做到这一点。

 grep '^[a-zA-Z0-9][email protected][a-zA-Z0-9]+.[az]{2,}' test-file

您可以找到执行类似工作的正则表达式,也可以自行创建它们(如果您知道它们是如何工作的)。

9.使用Grep查找电话号码

您可以使用grep正则表达式从文本文件中过滤出电话号码。请注意,您必须调整模式以匹配所需的电话号码类型。

 grep '(([0-9]{3})|[0-9]{3})[ -]?[0-9]{3}[ -]?[0-9]{4}' test-file

上面的命令过滤掉十位数的美国电话号码。

10.从源文件中查找URL

我们可以利用grep的功能来列出文本文件中找到的URL。下面给出的命令将打印出test-file中存在的所有URL。

 grep -E "^(http|https|ftp):[/]{2}([a-zA-Z0-9-.]+.[a-zA-Z]{2,4})" test-file

我们再次使用-E选项扩展正则表达式。您也可以使用egrep命令来避免添加它。

 egrep "^(http|https|ftp):[/]{2}([a-zA-Z0-9-.]+.[a-zA-Z]{2,4})" test-file

掌握Linux Grep命令

我们已经提供了一些有用的Linux grep命令示例来解决实际问题。尽管这些示例说明了grep在文本处理中的强大功能,但是如果您想使用grep高效,则需要掌握正则表达式。

有时,Linux用户遇到某些情况,他们不记得与命令相关的各种选项。希望Linux操作系统为您提供了获取几乎每个系统实用程序命令行帮助的方法。