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
此命令将显示我们的行 测试文件 包含这个词 电子邮件. 您还可以使用 grep 在多个文件中搜索相同的文本。
grep "example" /usr/share/dict/american-english /usr/share/dict/british-english
上面的命令显示单词的所有实例 example 在里面 美式英语 和 英式英语 字典文件。
2.找到完全匹配的词
前面介绍的 Linux grep 命令 example 还列出了部分匹配的行。 如果您只需要单词的确切出现次数,请使用下面给出的命令。
grep -w "string" test-file
这 -w 或者 –word-正则表达式 grep 选项将输出限制为仅完全匹配。 Grep 包含一些可以与默认命令一起使用的附加标志。
3.忽略大小写区别
默认情况下,grep 以区分大小写的方式搜索模式。 但是,如果您事先不知道该模式在什么情况下,您可能希望将其关闭。
grep -i "this" test-file
使用 -一世 或者 –忽略大小写 关闭区分大小写的选项。
4.计算模式的数量
这 -C 标志代表 数数. 它显示为特定模式找到的匹配数。 管理员可以使用它来检索有关系统的特定信息。
您可以使用 grep 管道 ps 命令来计算属于当前用户的进程。
ps -ef | grep -c $USER
以下命令显示数量 MP3 目录中存在的文件。
ls ~/Music | grep -c .mp3
5. 显示包含匹配的行号
您可能希望找到包含某个匹配项的行号。 使用 -n 或者 – 电话号码 grep 的选项来实现这一点。
cat /etc/passwd | grep -n rubaiat
此选项对于调试源代码和故障排除日志文件特别有用。 显示行中的所有数字 ~/.vimrc 用于配置 Vim 文本编辑器:
grep -n "set" ~/.vimrc
6. 使用扩展名查找文件名
获取所有列表 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 命令从文本文件中列出电子邮件地址。 以下 example 通过搜索正则表达式模式来做到这一点。
grep '^[a-zA-Z0-9]+@[a-zA-Z0-9]+.[a-z]{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。 下面给出的命令打印所有存在于 测试文件.
grep -E "^(http|https|ftp):[/]{2}([a-zA-Z0-9-.]+.[a-zA-Z]{2,4})" test-file
我们再次使用 -E 扩展正则表达式的选项。 您还可以使用 鹭鸶 命令以避免添加它。
egrep "^(http|https|ftp):[/]{2}([a-zA-Z0-9-.]+.[a-zA-Z]{2,4})" test-file
掌握 Linux Grep 命令
我们已经展示了几个有用的 Linux grep 命令示例,用于解决实际问题。 尽管这些示例说明了 grep 对文本处理的强大功能,但如果您想使用 grep 获得超高效率,则需要掌握正则表达式。
有时 Linux 用户会遇到某些情况,他们无法记住与命令相关的各种选项。 希望 Linux 操作系统为您提供了获取几乎所有系统实用程序的命令行帮助的方法。