微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

彻底理解grep命令

彻底理解grep命令
叶无风0人评论118人阅读2019-03-18 10:28:30
彻底理解grep命令
1.1 grep命令简介
grep (global search regular expression(RE) and print out the line,是一种强大的文本搜索工具,它能使用特定模式匹配(包括正则表达式)搜索文本,并输出匹配行。

1.2 grep工作过程
grep命令将逐行读入文件内容至模式空间,按照给定的pattern进行匹配。

如果该行内容能够被指定的pattern匹配,复制该行内容到标准输出,并且读入文件的下一行。
如果该行内容不能被指定的条件匹配,删除此行,读取下一行内容
对于匹配结果来说,grep认工作在贪婪模式下,会对符合匹配结果的字符串尽可能长的匹配。匹配的一行内容中可能出现整个字符串是不符合匹配结结果的,但这个字符串部分内容又能够被匹配到。
1.3 grep语法格式:
grep [options] pattern input_file_names
选项可以有零个或多个。

--color=auto: 对匹配到的文本着色显示
-m # 匹配#次后停止
-v 显示不被pattern匹配到的行
-I 忽略字符大小写
-n 显示匹配的行号
-c 统计匹配的行数
-o 仅显示匹配到的字符串
-q 静模式,不输出任何信息
-A # after,后#行
-B # before,前#行
-C # context,前后各#行
-e 实现多个选项间的逻辑or关系
-w 匹配整个单词
-E 使用扩展正则表达式
-F 相当于fgrep,不支持正则表达式
-f file 根据模式文件处理

1.4 grep示例
grep查找ssh相关进程,结果中为什么存在有grep进程出现呢?

[19:58:31 [email protected] /]#ps aux | grep sshd
root 6971 0.0 0.2 112756 4304 ? Ss 08:43 0:00 /usr/sbin/sshd -D
root 7393 0.0 0.2 160848 5732 ? Ss 08:44 0:09 sshd: [email protected]/1,pts/2
root 15188 0.0 0.0 112712 976 pts/1 S+ 20:00 0:00 grep --color=auto sshd
这是由于管道实现的是进程之间的通信,管道右边进程在ps进程启动后也会启动,它们之间的进程存在交集状态。

grep会对行中符合匹配标准的结果尽可能长的匹配,最终结果可能会发现整个字符串是不符合匹配条件的,但这个字符串部分是符合的。

[20:25:07 [email protected] tmp]#cat reg.txt
12 goo oogle google
ggole goo00le googlegoogl
root root googlelegoo rot
rotroot rootrot

[20:31:22 [email protected] tmp]#egrep "rot|root" reg.txt root root googlelegoo rot rotroot rootrot

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐