grep命令详解
grep是文本搜索工具的命令, 它是逐行搜索,并且以整行为结果显示.grep命令格式grep [OPTIONS] PATTERN [FILE...]PATTERN主要是元字符和字符串组成的元字符. : 匹配任意单字符,包括空格和globing中的?相同[]: 方括号内可以放指定字符的范围, 常用格式有[[:digit:]]数字, [[:lower:]]小写字母, [[:upp...
grep是文本搜索工具的命令, 它是逐行搜索,并且以整行为结果显示.
grep命令格式
grep [OPTIONS] PATTERN [FILE...]
PATTERN主要是元字符和字符串组成的
元字符
. : 匹配任意单字符,包括空格和globing中的?相同
[]: 方括号内可以放指定字符的范围, 常用格式有[[:digit:]]数字, [[:lower:]]小写字母, [[:uppper:]]大写字母, [[:alpha:]]大小写字母, [[:alnum:]]字母和数字, [[:space:]]空格和回车, [[:punct:]]标点符号
[^]: 中括号内内容取反, 例如[^1-5] 取1到5外所有的字符
次数匹配字符
*: 前面字符可以出现任意次包括0次
\?: 前面字符出现0或1此
\+:前面字符出现一次或一次以上
\{m\}:前面字符出现m次
\{n,m\}: 前面字符出现n到m次
\(0,m\): 前面字符最多出现m次
所以.*表示任意长度字符,包括空
位置锚定符
^:行首锚定
$: 行尾锚定
例: ^[[:space:]]*$表示空行
只包含字母并且首尾两端有空格的字符串就单词,
\<: 锚定词首
\>: 锚定词尾
例: \<[[:alpha:]]*\>表示一个单词
分组
\(\): 将字符串用小括号包起来,后面加次数匹配字符
例: \(abc\)* 表示abc可出现无数次
分组引用
\#:引用前面分好的组,并且前面可以有多个组, #表示第几个组, 组是由左到右的小括号编号的
文本内容 this is aweful adabcfdabc [root@centos ~]# grep "\([[:alpha:]]*\(abc\)[[:alpha:]]*\)\2" b adabcfdabc
注意: 正则表达式的贪婪匹配和非贪婪匹配
例如有个字符串abcderwd, pattern为abc.*d, 结果会为abcderwd而不是abcd, 说明他会尽可能多的匹配, 也就是贪婪模式, 反之则为非贪婪模式.
扩展正则表达式
用法:
egrep [OPTIONS] PATTERN [FILE...] 或者grep -E
主要说下它和一般正则表达式的相同点和区别
1. 字符匹配一样
2. 次数匹配只有*一样其他都可以省略转义字符\, 例如: ?, + {m,n}
3. 锚定都省略了转义字符\, 只有单词锚定一样\<\>
4. 分组无需\(\),直接用括号()
5.分组引用一样\#
6. 加了或的关系
[root@centos ~]# grep -E --color=auto "good|bad" b today is a good day this is goodis not enough this is bad
注意两边要全包括, 但如果只要部分, 需要用括号括起来
[root@centos ~]# grep -E --color=auto " (good|bad) " b today is a good day
grep中一些常用参数选项
-v:取反
取除了good的说有行
[root@centos ~]# grep -v --color=auto "good" b abcd this is bad this is ok thi si aweful adabcfdabc
-o: 仅显示匹配的字符串本身,而非整行
[root@centos ~]# grep -o --color=auto "good" b good good
-i: 忽略查询字符串的大小写
[root@centos ~]# grep -i --color=auto "GooD" b today is a good day this is goodis not enough
-E: 支持扩展正则表达式和egrep一样
-A#: 后面直接加数字.来显示搜索到结果行的上下#行
[root@centos ~]# cat b today is a good day abcd this is goodis not enough this is bad this is ok thi si aweful adabcfdabc [root@centos ~]# grep -A1 --color=auto "good" b today is a good day abcd this is goodis not enough this is bad
-B#: 后面直接加数字.来显示搜索到结果行的上#行
-C#: 后面直接加数字.来显示搜索到结果行的下#行
转载于:https://blog.51cto.com/jzrobbie/1693996
开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!
更多推荐
所有评论(0)