1、简介
grep
是用于在文件中搜索包含特定模式的行。它是“Global Regular Expression Print”的缩写,它可以在文件中全局搜索正则表达式,并将匹配的行打印出来。grep
是 Linux 系统中非常常用的工具,广泛用于文本处理和数据分析。
2、基本用法
grep
的基本语法如下:
grep [选项] 模式 [文件...]
-
模式
:要搜索的字符串或正则表达式。 -
文件
:要在其中搜索模式的文件。如果未指定文件,grep
会从标准输入读取数据。
3、常用选项
-
-i
:忽略大小写。 -
-v
:反向匹配,即显示不匹配的行。 -
-n
:显示匹配行的行号。 -
-c
:只显示匹配行的总数。 -
-l
:只显示包含匹配行的文件名。 -
-r
:递归搜索目录中的所有文件。 -
-E
:使用扩展正则表达式。 -
-o
:只显示匹配的部分,而不是整行。
4、实战示例
一、 基本用法
1、 在单个文件中搜索
[root@localhost ~]# ls -l ### 列出当前目录的文件
[root@localhost ~]# cat file1.txt ### 查看file1.txt的内容
[root@localhost ~]# grep "hello" file1.txt ### 查询文件file1.txt中“hello”所在的行
2、 在多个文件中搜索
[root@localhost ~]# ls -l ### 列出当前目录的文件
[root@localhost ~]# cat file1.txt ### 查看file1.txt的内容
[root@localhost ~]# cat file2.txt ### 查看file2.txt的内容
[root@localhost ~]# grep "hello" file1.txt file2.txt ### 查询文件file1.txt和file2.txt中“hello”所在的行
3、 忽略大小写
[root@localhost ~]# ls -l ### 列出当前目录的文件
[root@localhost ~]# cat file1.txt ### 查看file1.txt的内容
[root@localhost ~]# grep -i "HELLO" file1.txt ### 忽略大小写,查询文件file1.txt中“hello”所在的行
4、 显示行号
[root@localhost ~]# ls -l ### 列出当前目录的文件
[root@localhost ~]# cat file1.txt ### 查看file1.txt的内容
[root@localhost ~]# grep -n "HELLO" file1.txt ### 显示行号,查询文件file1.txt中“hello”所在的行
5、 反向匹配
[root@localhost ~]# ls -l ### 列出当前目录的文件
[root@localhost ~]# cat file1.txt ### 查看file1.txt的内容
[root@localhost ~]# grep -v "olleh" file1.txt ### 反向匹配,查询文件file1.txt中“olleh”所在的行
6、 递归搜索目录
[root@localhost ~]# cat /tmp/file1.txt ### 查看/tmp/file1.txt的内容
[root@localhost ~]# cat /tmp/test/file2.txt ### 查看/tmp/test/file2.txt的内容
[root@localhost ~]# grep -r "hello" /tmp ### 递归搜索目录查询文件中“hello”所在的行
7、 使用正则表达式
[root@localhost ~]# ls -l ### 列出当前目录的文件
[root@localhost ~]# cat file1.txt ### 查看file1.txt的内容
[root@localhost ~]# grep -E "hello|world" file1.txt ### 使用正则表达式,查询文件file1.txt中“hello”所在的行
8、 只显示匹配的部分
[root@localhost ~]# ls -l ### 列出当前目录的文件
[root@localhost ~]# cat file1.txt ### 查看file1.txt的内容
[root@localhost ~]# grep -E "hello|world" file1.txt ### 局部查询文件file1.txt中“hello”所在的行
二、 高级用法
9、 结合管道操作符 |
[root@localhost ~]# ls -l ### 列出当前目录的文件
[root@localhost ~]# cat file1.txt ### 查看file1.txt的内容
[root@localhost ~]# cat file1.txt | grep "hello" ### 首先,cat 读取并输出file1.txt文件的内容;然后,通过管道操作符 |,将这些内容传递给grep命令。最后,在接收到的内容中搜索包含 "hello" 的行,并将这些行输出到终端屏幕。
10、 结合find 特定语法占位符{}
和结束符+
[root@localhost ~]# ls -l ### 列出当前目录的文件
[root@localhost ~]# cat file1.txt ### 查看file1.txt的内容
[root@localhost ~]# find /root -type f -exec grep "hello" {} + ### 从/root目录开始,搜索所有文件,并对每个文件执行grep "hello"命令,即在每个文件中搜索包含字符串"hello"的行。找到的文件和匹配的行会被输出。
原文始发于微信公众号(奶嘴很忙):grep – 文件内容搜索工具
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之家整理,本文链接:https://www.bmabk.com/index.php/post/303707.html