彻底理解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

相关文章

正则替换html代码中img标签的src值在开发富文本信息在移动端...
正则表达式
AWK是一种处理文本文件的语言,是一个强大的文件分析工具。它...
正则表达式是特殊的字符序列,利用事先定义好的特定字符以及...
Python界一名小学生,热心分享编程学习。
收集整理每周优质开发者内容,包括、、等方面。每周五定期发...