加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

彻底理解grep命令

发布时间:2020-12-14 05:47:56 所属栏目:百科 来源:网络整理
导读:彻底理解grep命令 叶无风0人评论118人阅读2019-03-18 10:28:30 彻底理解grep命令 1.1 grep命令简介 grep (global search regular expression(RE) and print out the line,是一种强大的文本搜索工具,它能使用特定模式匹配(包括正则表达式)搜索文本,并默认
彻底理解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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读