当前位置:首页 > 编程语言 > 正文内容

Linux运维基础之grep命令详解

a811625532年前 (2024-02-27)编程语言9

在 Linux 世界中,搜索文本文件以查找特定内容是一项常见任务,而使用 grep 命令可以高效地完成这项任务。grep 是 “Global Regular Expression Print(全局正则表达式打印)” 的缩写,是一种功能强大的命令行工具,允许用户使用正则表达式定义的模式搜索文件。

无论是查找日志文件中的特定错误,还是在大型代码库中查找特定术语的所有实例, grep 都是文本搜索和操作的首选工具。grep 可以匹配复杂的模式、过滤结果,甚至可以跨多个文件执行操作,是系统管理员、程序员和数据分析师的重要工具。

grep 命令的一般语法

$ grep [OPTIONS...] [PATTERN] [FILE...]

1. 搜索文件中的内容

grep exp FileName.txt

grep 是一个功能强大的命令,它允许你搜索一个文件或多个文件中存在的一组特定字符或单词。上面的命令搜索 FileName.txt 中的 exp,找到后返回结果。

注: grep  默认区分大小写,如果没有其他参数,只要与 “exp” 匹配 grep 就会返回结果。

示例:

假设 FileName.txt 包含以下文本:

This is an example file.
The word exp is here.
No match in this line.
Expression is a good word.
Experience teaches wisdom.

命令 grep exp FileName.txt 的输出结果如下:

This is an example file.
The word exp is here.
Expression is a good word.
Experience teaches wisdom.

此输出将显示 FileName.txt 中包含子串 “exp” 的所有行。

2. 在多个文件中搜索内容

grep all name1.txt name2.txt name3.txt

该命令将搜索范围扩展到多个指定文件名。

示例:

命令 grep all name1.txt name2.txt name3.txt 使用 grep 在文件  name1.txtname2.txt, 和 name3.txt 中搜索字符串 “all”。如果找到该字符串,将打印包含该字符串的行和文件名。

name1.txt:We are all in this together.
name2.txt:All the best for your future.
name3.txt:all of these lines match.
name3.txt:All is well.

3. 用 grep 查找精确单词

grep -w example Example.txt

使用 -w 参数后,grep 的搜索会更加精确,只有当精确词匹配时才会返回 true。在上面的命令中,grepExample.txt 中搜索 “example“。

以下任何一项都会返回 false:

  • Example
  • examples

4. 使用 grep 进行不区分大小写搜索

grep -i being ExampleFile.txt

使用 -i 参数后,grep 将以不区分大小写的方式进行搜索,只要输入的内容匹配,不管是小写还是大写字母,都将返回 true。

上面的命令在 ExampleFile.txt 中搜索单词 “being“,如果找到将返回结果。

如果存在 -i,以下所有命令都将返回 true:

  • Being”
  • “beING

5. 用 grep 计算和输出单词重复率

grep -c  *** allness TextFile.txt

使用 -c 参数后,grep 会首先查找是否存在特定单词,然后计算该单词的重复次数。上面的命令搜索 “ *** allness“,并返回它在 TextFile.txt 中出现的次数。

下面是给定命令的假设输出示例:

5

这意味着在 TextFile.txt 文件的在 5 行中找到了 “ *** allness” 一词。如果在文件中根本找不到 “ *** allness” 一词,命令将输出

0

6. 使用 grep 进行反向搜索

grep -v lorem sometext.txt

参数 -v 将排除与输入模式匹配的整行,并输出不包含该模式的其余部分。上述命令在 sometext.txt 中搜索 “lorem“。任何不含 “lorem” 的行都将返回 true。

示例:

假设 sometext.txt 包含以下行:

lorem ipsum dolor sit amet
consectetur adipiscing elit
lorem sed do eiu *** od tempor

如果运行 grep -v 'lorem' sometext.txt 命令,输出结果将是

consectetur adipiscing elit

只有这一句没有 “lorem” 一词。

7. 显示匹配行和列表行号

grep -n ipsum randomtext.txt

参数 -n 会返回包含行数的内容。如果包含搜索单词,则返回整行(单词存在的地方)及其行数。上面的命令在 randomtext.txt 中搜索 “ipsum“,其输出显示了 “ipsum“所在的行。

示例:

假设 randomtext.txt 有以下内容:

Lorem ipsum dolor sit amet, consectetur adipiscing elit.
Another line without the search term.
Yet another line.
ipsum ipsum ipsum
Here's an ipsum too.

命令 grep -n ipsum randomtext.txt 将产生以下结果:

1:Lorem ipsum dolor sit amet, consectetur adipiscing elit.
4:ipsum ipsum ipsum
5:Here's an ipsum too.

这里,冒号前的数字代表文件中找到字符串 “ipsum” 的行号。

8. 列出包含匹配字符串的文件名

grep -l dolor *txt

使用 -l 参数时,只有包含 “dolor” 的 .txt 扩展名文件才会返回 true。文件名将被打印出来,而不是整个文件。

示例:

假设目录中有三个文件,即 file1.txtfile2.txt, 和 file3.txt,并且在 file1.txtfile3.txt 中发现了 “dolor”,那么输出结果将如下所示:

file1.txt
file3.txt

9. 搜索以单一规则条件开头的行

grep ^Example TextFile.txt

搜索规则前面的字符 ^ 表示 grep 只能搜索以搜索规则开头的单词,而不能搜索其他单词。上面的命令将搜索 TextFile.txt,并返回所有以 “Example” 开头的行。

示例:

假设 TextFile.txt 包含以下文本:

Example line 1
This is another line
Example line 2
Yet another line without the keyword
Example line 3

该命令的输出将是:

Example line 1
Example line 2
Example line 3

10. 使用 grep 进行多规则匹配搜索

1 grep -e lorem -e amet ExampleFile.txt

在同一命令中,-e 参数可以多次使用;每一次都与搜索规则配对,可以让你在搜索文件时更有针对性。上面的命令在 ExampleFile.txt 中搜索 “lorem” 和 “amet“,如果为真/找到则返回。

示例:

假设 ExampleFile.txt 包含以下行:

lorem ipsum dolor sit amet
consectetur adipiscing elit
amet, consectetur adipiscing
sed do eiu *** od tempor
lorem incididunt ut

运行命令 grep -e lorem -e amet ExampleFile.txt 将输出结果:

lorem ipsum dolor sit amet
amet, consectetur adipiscing
lorem incididunt ut

更多 Linux 命令

下面罗列了最常见的一些 Linux 命令,您可以根据自己的需要查阅对应命令的详细解析:

目录操作  ·  ·  ·  · 
文件操作  ·  ·  ·  ·  ·  ·  ·  · 
文件系统操作  ·  · 
***  ·  ·  ·  · 
搜索和文本处理  ·  ·  ·  ·  ·  · 
系统信息和管理  ·  ·  ·  ·  ·  · 
用户和会话管理  ·  ·  · 

此外,我们还整理 ,以帮助大家全面深入地学习 Linux。

扫描二维码推送至手机访问。

版权声明:本文由2345好导航站长资讯发布,如需转载请注明出处。

本文链接:http://2345hao.cn/blog/index.php/post/8232.html

分享给朋友:

“Linux运维基础之grep命令详解” 的相关文章

宝塔面板教程之FTP管理篇

宝塔面板教程之FTP管理篇

使用宝塔面板,您可以快速地创建一个FTP管理账户,对网站文件进行管理。但有必要提醒大家的是,使用FTP远不如使用SFTP安全,你可以查看文章“”进一步了解两者之间的差异。 此外,宝塔面板的文件管理模块其实已经能够满足站长的大部分文件管理需求。当然,如果你非得要使用FTP管理服务器文件,可以参照以下...

宝塔面板教程之安全管理篇

宝塔面板教程之安全管理篇

宝塔面板的安全管理可以设置SSH开关、禁用PING、放行端口、屏蔽IP等相关的操作。 SSH的设置 SSH的关闭与启动,点击下图的开关,即可开启或关闭SSH远程连接。 SSH端口的修改,SSH远程连接的默认端口为22,修改端口前,请先查看该端口是否被占用。 PING命令的...

宝塔面板教程之面板设置篇

宝塔面板教程之面板设置篇

宝塔面板设置主要涉及的是宝塔控制后台自身的参数,包括诸如面板的开关、自动更新及SSL、面板端口设置等。虽然这部分不涉及服务器自身的管理,但对宝塔面板的设置也有其重要。 特别是面板端口、安全入口及面板密码等涉及安全的参数设置。 启动和关闭面板 如果你长时间无需使用到宝塔面板,可以考虑...

2022年Web开发人员的平均工资统计报告

2022年Web开发人员的平均工资统计报告

想成为一名网络开发人员或好奇工作的哪些子类型的薪水最高?Web开发是一个竞争激烈、多样化的行业,随着新语言和框架的出现而不断发展。 询问Web开发人员的薪水是一个难以解决的问题(尽管我们尝试)。有太多的因素需要考虑。 无论您是自由开发者还是有兴趣从事更传统的工作、喜欢前端或后端工作,或者想知...

PostgreSQL与SQL Server之间的16个关键差异

PostgreSQL与SQL Server之间的16个关键差异

市场上有各种各样的数据库可供选择,用户通常可以仔细考虑PostgreSQL与SQL Server,以便为他们的用例找出更好的选择。使用PostgreSQL进行运营的组织可能希望切换到像Microsoft SQL Server这样的数据库,因为它主要迎合不同的数据仓库解决方案、电子商务和其他业务线...

安装DragonflyDB内存数据存储以提升网站性能

安装DragonflyDB内存数据存储以提升网站性能

DragonflyDB是一个内存数据存储应用程序,可以帮助提高网站性能。 DragonflyDB DragonflyDB是一个免费的内存数据存储应用程序,运行在Linus OS上。它使用每核线程架构来减少延迟。Dragonfly与Redis和Memcached兼容。它是KeyDB的合...