Linux正则表达式grep笔记
grep命令简介:
grep 全名 Global Regular Expression Print
正则表达式:Regular Expression, RegExp
grep : 使用基本正则表达式定义的模式来过滤文本的命令:
- i 忽略大小写
-v 反向匹配
-o 只显示匹配的字符串
--color 高亮显示匹配字符串
-E 支持扩展的正则表达式
-A # (after)匹配以后,它下面的多少行也显示
-B # (before)前面的
普通正则表达式:
-
元字符:
. : 匹配任意单个字符
[] : 匹配指定范围内的任意单个字符
[^] : 匹配指定范围外的任意单个字符
字符集合:数字 [:digit:], 小写字母 [:lower:], 大写字母[:upper:], 符号 [:punct:], 空白 [:space:], 字母 [:alpha:], 字母数字 [:alnum:]
-
匹配次数:
正则表达式默认匹配贪婪模式
* : 匹配其前面字符任意次
.* : 匹配任意长度的任意字符
\? : 匹配其前面的字符1次或0次
\{m, n\} : 匹配其前面的字符至少m次,至多n次
位置锚定:
- ^ : 锚定行首,此字符后面的任意内容必须出现在行首
$ : 锚定行尾,此字符前面的任意内容必须出现在行尾
^$: 匹配空白行
<\ or \b : 锚定词首,其后面的任意字符必须作为单词的首部出现
\> or \b:锚定词尾,其前面的字符必须作为单词的尾部出现
例子: \<root\> = \broot\b 匹配root这个单词
-
分组:
\( \) 把括号内的内容当做一个整体
后向引用: \1 表示第一左括号及与之对应的有括号所包括的所有内容。
例子:
He love his lover
She like his liker
He love his liker
grep '\(l..e\).*\1r' test.txt --color
扩展的正则表达式:
egrep = grep -E
-
元字符:同普通正则表达式
-
匹配次数:
不需要再使用反斜线"\"
增加内容
+:匹配其前面的字符至少一次
-
锚定字符:同普通正则表达式
-
分组:
():无需加反斜线
| : or
老是记不住,还是用的少。特此做下记录,以备查阅。