grep命令 – 强大的文本搜索工具

grep是“global search regular expression and print out the line”的简称,意思是全面搜索正则表达式,并将其打印出来。这个命令可以结合正则表达式使用,它也是linux使用最为广泛的命令。


grep命令的选项用于对搜索过程的补充,而其命令的模式十分灵活,可以是变量、字符串、正则表达式。需要注意的是:一当模式中包含了空格,务必要用双引号将其引起来。


linux系统支持三种形式的grep命令,大儿子就是grep,标准,模仿的代表。二儿子兴趣爱好多-egrep,简称扩展grep命令,其实和grep -E等价,支持基本和扩展的正则表达式。小儿子跑的最快-fgrep,简称快速grep命令,其实和grep -F等价,不支持正则表达式,按照字符串表面意思进行匹配。


语法格式: grep [参数]


常用参数:


-i 搜索时,忽略大小写
-c 只输出匹配行的数量
-l 只列出符合匹配的文件名,不列出具体的匹配行
-n 列出所有的匹配行,显示行号
-h 查询多文件时不显示文件名
-s 不显示不存在、没有匹配文本的错误信息
-v 显示不包含匹配文本的所有行
-w 匹配整词
-x 匹配整行
-r 递归搜索
-q 禁止输出任何结果,已退出状态表示搜索是否成功
-b 打印匹配行距文件头部的偏移量,以字节为单位
-o 与-b结合使用,打印匹配的词据文件头部的偏移量,以字节为单位


参考实例


支持多文件查询并支持使用通配符:


[root@proyy.com ~]# grep zwx file_* /etc/hosts
file_1:zwx
file_1:zwx
file_1:zwxddkjflkdjfdlkfjlsdkj
file_2:zwx
file_4:dkfjlzwxejfkje
file_4:zwx djfkdjf
file_4:zwxedkfgj


输出匹配字符串行的数量:


[root@proyy.com ~]$ grep -c zwx file_*
file_1:2
file_2:1
file_3:0


列出所有的匹配行,并显示行号:


[root@proyy.com ~]# grep -n zwx file_*
file_1:1:zwx
file_1:4:zwx
file_1:10:zwxddkjflkdjfdlkfjlsdkj
file_2:2:zwx
file_4:3:dkfjlzwxejfkje
file_4:4:zwx djfkdjf
file_4:5:zwxedkfgj


显示不包含模式的所有行:


[root@proyy.com ~]# grep -vc zwx file_*
file_1:7
file_2:4
file_3:5
file_4:2


不再显示文件名:


[root@proyy.com ~]# grep -h zwx file_*
zwx
zwx
zwxddkjflkdjfdlkfjlsdkj
zwx
dkfjlzwxejfkje
zwx djfkdjf
zwxedkfgj


只列出符合匹配的文件名,不列出具体匹配的行:


[root@proyy.com ~]# grep -l zwx file_*
file_1
file_2
file_4


不显示不存在或无匹配的文本信息:


[root@proyy.com ~]# grep  -s zwx file1 file_1
file_1:zwx
file_1:zwx
file_1:zwxddkjflkdjfdlkfjlsdkj
[root@proyy.com ~]# grep zwx file1 file_1
grep: file1: No such file or directory
file_1:zwx
file_1:zwx
file_1:zwxddkjflkdjfdlkfjlsdkj


递归搜索,不仅搜索当前目录,还搜索子目录:


[root@proyy.com ~]# grep -r zwx file_2 *
file_2:zwx
anaconda-ks.cfg:user --name=zwx --gecos="zwx"
file_1:zwx
file_1:zwx
file_1:zwxddkjflkdjfdlkfjlsdkj
file_2:zwx
file_4:dkfjlzwxejfkje
file_4:zwx djfkdjf
file_4:zwxedkfgj
initial-setup-ks.cfg:user --name=zwx --gecos="zwx"


匹配整词,以字面意思去解释他,相当于精确匹配:


[root@proyy.com ~]# grep zw* file_1
zwx
zwx
zdkfjeld
zw
ze
zwxddkjflkdjfdlkfjlsdkj
[root@proyy.com ~]# grep -w zw* file_1
zw


匹配整行,文件中的整行与模式匹配时,才打印出来:


[root@proyy.com ~]# grep -x zwx file_*
file_1:zwx
file_1:zwx
file_2:zwx


不输出任何结果,已退出状态表示结果:


 [root@proyy.com ~]# grep -q zwx file_1
[root@proyy.com ~]# echo $?
0
[root@proyy.com ~]# grep -q zwx file_5
[root@proyy.com ~]# echo $?
1
[root@proyy.com ~]# grep -q zwx file5
grep: file5: No such file or directory
[root@proyy.com ~]# echo $?
2


查找一个文件中的空行和非空行:


[root@proyy.com ~]# grep -c ^$ file_1
4
[root@proyy.com ~]# grep -c ^[^$] file_1
15


匹配任意或重复字符用“.”或“*”符号来实现:


[root@proyy.com ~]# grep ^z.x file_1
zwx
zwx
zwxddkjflkdjfdlkfjlsdkj
[root@proyy.com ~]# grep ^z* file_6
zwx
dfkjd

zzdfjkd
zz dfdww
haha


免责声明:务必仔细阅读

  • 本站为个人博客,博客所转载的一切破解、path、补丁、注册机和注册信息及软件等资源文章仅限用于学习和研究目的;不得将上述内容用于商业或者非法用途,否则,一切后果请用户自负。本站信息来自网络,版权争议与本站无关。

  • 本站为非盈利性站点,打赏作为用户喜欢本站捐赠打赏功能,本站不贩卖软件等资源,所有内容不作为商业行为。

  • 本博客的文章中涉及的任何解锁和解密分析脚本,仅用于测试和学习研究,禁止用于商业用途,不能保证其合法性,准确性,完整性和有效性,请根据情况自行判断.

  • 本博客的任何内容,未经许可禁止任何公众号、自媒体进行任何形式的转载、发布。

  • 博客对任何脚本资源教程问题概不负责,包括但不限于由任何脚本资源教程错误导致的任何损失或损害.

  • 间接使用相关资源或者参照文章的任何用户,包括但不限于建立VPS或在某些行为违反国家/地区法律或相关法规的情况下进行传播, 博客对于由此引起的任何隐私泄漏或其他后果概不负责.

  • 请勿将博客的任何内容用于商业或非法目的,否则后果自负.

  • 如果任何单位或个人认为该博客的任何内容可能涉嫌侵犯其权利,则应及时通知并提供身份证明,所有权证明至admin@proyy.com.我们将在收到认证文件后删除相关内容.

  • 任何以任何方式查看此博客的任何内容的人或直接或间接使用该博客的任何内容的使用者都应仔细阅读此声明。博客保留随时更改或补充此免责声明的权利。一旦使用并复制了博客的任何内容,则视为您已接受此免责声明.

您必须在下载后的24小时内从计算机或手机中完全删除以上内容.

您使用或者复制了本博客的任何内容,则视为已接受此声明,请仔细阅读


更多福利请关注一一网络微信公众号或者小程序

一一网络微信公众号
打个小广告,宝塔服务器面板,我用的也是,很方便,重点是免费的也能用,没钱太难了,穷鬼一个,一键全能部署及管理,送你3188元礼包,点我领取https://www.bt.cn/?invite_code=MV9kY3ZwbXo=


一一网络 » grep命令 – 强大的文本搜索工具

发表评论

发表评论

一一网络-提供最优质的文章集合

立即查看 了解详情