-
正则表达式分为两种基础正则表达式和扩展正则表达式,有可能其相同元字符的意义也不尽相同
-
基本正则表达式
. 任意单个字符
[]指定范围内的任意单个字符
[^]指定范围外的任意单个字符- 次数匹配
*任意次
\? 0次或者一次
\{m,n} 至少m次至多n次,若无上限,则n可以不写,若m可以为0,则将m写成0,但不能不写
.* 任意长度的任意字符
^ 锚定行首
$ 锚定行尾
< 或 \b 锚定词首
> 或 \b 锚定词尾
\1 只应用第一个小括号里面的内容
- 次数匹配
-
grep (简单正则表达式)
-i 忽略字符大小写
-v 反向搜索
-o 只显示匹配到的字符串
--color 显示颜色
-E 使用扩展正则表达式
-A n: 表示匹配到的当行和下面的n行均显示
-B n: 表示匹配到的当行和上面的n行均显示
-C n: 表示匹配到的上面和下面的n行均显示 -
grep ‘^$’ 文件名,找文件中的空白行
-
grep ‘[[:digit:]]$’ 文件名 文件中以数字结尾的行
-
grep ‘[[:space:]][[:digit:]]$’ 文件名 文件中以数字结尾,并前面空白字符
-
grep "root>" 文件名 文件中以root作为词尾的行,非行尾
grep "root\b" 文件名 文件中以root作为词尾的行,非行尾 -
grep "<root" 文件名 文件中以root作为词首的行,非行首
grep "\broot" 文件名 文件中以root作为词首的行,非行首 -
grep "<root>" 文件名 文件中出现root作为单词出现的行,若文件中有rroot ,就不会被找到
grep "\broot\b" 文件名 文件中出现root作为单词出现的行,若文件中有rroot ,就不会被找到 -
grep ‘l..e*l..e’ 文件名 寻找文件中类似这种结构 he is like her liker 其中 .代表一个字,*代表中间任意个字
扩展正则表达式
字符匹配:
. 任意单个字符
[] 指定范围内的任意单个字符
[^] 指定范围外的任意单个字符
次数匹配
匹配前面字符任意次
?匹配前面字符0次或者一次
+ 匹配前面字符至少一次
eg :grep -E '^[[:space:]]+' 文件名 指的是文件中文本至少有一个空格开头的行
{m,n} 至少m次至多n次,若无上限,则n可以不写,若m可以为0,则将m写成0,但不能不写
. 任意长度的任意字符
^ 锚定行首
$ 锚定行尾
\< 或 \b 锚定词首
\> 或 \b 锚定词尾
eg:egrep --color '\b([1-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\b' 文件名 找到文件中1-255之间的数字,作为单个单词出现
分组
() 分组
\1 只应用第一个小括号里面的内容
或者
| 表示or eg:grep -E ‘C|cat’ 文件名 指的文件文本中含有 C或者cat
grep -E '(C|c)at' 文件名 指的文件文本中含有 Cat或者cat
与正则表达式区别
1.存在 + 匹配前面字符至少一次
- ?匹配0次或者至少一次
{m,n} 至少m次至多n次 都不用加 \ - 支持 | 为or 的意思
网友评论