文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

在 Linux 中怎样进行 grep 搜索呢?通过例子来学习几个常用的方法

2024-12-01 13:21

关注

grep 是一个功能强大的 unix 命令,可以在文件内容中搜索各种参数。在各种故障排除或调试中特别有用。

grep 有很多选项和使用场景,你应该不会全部都用得到,不过,其中有几个 grep 命令还是经常会用到的。

本文会举例说明一些最常见的 grep 命令,介绍其常见选项及用法。

如下表列出了一些常见的选项及其说明:

选项

例子

说明

i

grep -i pattern file

不区分大小写的搜索

A

grep -A n pattern file

显示搜索的后几行

B

grep -B n pattern file

显示搜索的前几行

C

grep -C n pattern file

显示搜索的前几行和后几行

v

grep -v pattern file

显示不匹配的行

c

grep -c pattern file

计算匹配的行数

l

grep -l pattern file

只显示搜索到的文件名称

w

grep -w pattern file

全字匹配

e

grep -e regex file

匹配正则表达式

a

grep -a pattern file

在二进制文件中搜索

r

grep -r pattern dir

递归搜索目录

grep 命令实例

你可能已经知道,要搜索文件中特定的文本或表达式,可以这样使用grep:

grep search_pattern filename

现在我们看看几个常见的例子

不区分大小写的搜索

默认情况下,grep 是区分大小写的。你可以使用 -i 选项来让其不区分大小写:

grep -i search_pattern filename

显示匹配文本的前后行

默认情况下,你只会看到匹配文本的当前行。但是,当你在排除故障的时候,看一下匹配行的前一行,或者后一行,也会有帮助。

你可以使用 -A 来显示匹配行之后的行。记住,A代表之后(After)。

下面的命令将显示匹配的行以及匹配后的5行:

grep -A 5 search_pattern filename

类似地,你可以使用 -B 选项在匹配的行之前显示行。记住,B代表之前(Before)。

下面的命令将在匹配行之前显示5行以及匹配行:

grep -B 5 search_pattern filename

我最喜欢的是选项 -C,因为它显示了匹配行之前和之后的行。C 代表圆(Circle)。

下面的命令将显示匹配行之前的5行、匹配行和匹配行之后的5行:

grep -C 5 search_pattern filename

显示不匹配的行

你可以使用 grep 显示与给定表达式不匹配的所有行。此“反向匹配”使用 -v 选项:

grep -v search_pattern filename

你可以将 -i-v 一起使用。

计算匹配行的数量

使用 -c 选项,可以不显示匹配的行,只显示与给定表达式匹配的行的数量。注意,这里的 c 是小写的 c。

grep -c search_pattern filename

你可以将 -c -v 选项一起用来查看与给定表达式不匹配的行数。当然,也可以结合使用不区分大小写的 -i 选项。

显示匹配行的行号

要显示匹配行的行号,可以使用 -n 选项。

grep -n search_pattern filename

显示行号也可以使用 -v 来进行反向搜索。

在多个文件中搜索

可以给出多个文件进行 grep 搜索:

grep search_pattern file1 file2

这样搜索是可以的。但平时更实用也更常用的,是搜索特定类型的文件,比如只搜索shell脚本(以 .sh 结尾的文件),可以这样使用 grep 命令:

grep search_pattern *.sh

递归搜索目录中的所有文件

你可以使用 -r 选项执行递归搜索,它会在当前目录以及子目录的所有文件中搜索给定的表达式:

grep -r search_pattern directory_path

仅显示文件名

默认情况下,grep 显示匹配的行。如果你已经在多个文件上运行了搜索,并且只想查看哪些文件包含字符串,那么可以使用 -l 选项。

grep -l search_pattern files_pattern

比如你要在所有.md文件中搜索单词 "handbook",可以这样:

grep -l handbook *.md

全字符匹配(搜索完整单词)

默认情况下,grep 将显示包含给定字符串的任何行。你可能并不总是想要这样,比如你正在搜索“done”一词,它的结果还会显示包含“doner”或“abandoned”的行。

要使用全字符匹配 ,可以使用 -w 选项:

grep -w search_string file

这样,搜索单词 "done" 的时候,就只显示包含 "done" 的行,而不会显示包含 "doner" 或 "abandoned" 的行。

按正则表达式搜索

你可以使用正则表达式来搜索,选项 -e 可以允许使用正则表达式,另外一个选项 -E 允许使用扩展的正则表达式。

grep -e regex_pattern file

使用 "或运算符" |

你可以在同一个 grep 搜索中使用多个表达式,如果要搜索包含“表达式1”,或者“表达式2”的行,可以使用“或(OR)" 运算符 |,但是需要添加反斜线进行转义:

grep 'pattern1\|pattern' filename

AND运算符没有特定选项。为此,你可以多次使用 grep 和管道重定向。

搜索二进制文件

默认情况下,grep 会忽略二进制文件。你可以使用 -a 选项使其在二进制文件中搜索,就像它是文本文件一样:

grep -a pattern binary_file
来源:TIAP内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯