grep
以前我们用grep在一个文件中找出包含某些字符串的行,比如在头文件中找出符合某个模式(Pattern)的一类字符串,例如找出所有符合[email protected]模式的字符串(也就是email地址),要求x字符是可以是字母、数字、下划线、小数点。
字符类限定符(Character Class):如上例的x和y,他们在模式中表示一个字符,但是在取值范围是一类字符中的任意一个。
数量限定符(Quantifier):邮箱地址的每一部分可以有一个或者多个x字符。
位置限定符(Achor):描述各个字符类以及普通字符之间的位置关系,例如邮件地址分为三部分,用普通字符@和.隔开。
每一部分可以用字符类和数量限定符描述,为了表述位置关系,需要位置限定符。(有了三个概念,每次写正则表达式就不会乱了思绪)
exe
192.168.1.1 1234.234.04.5678 123.4234.045.678 abcde
执行的命令为:
[12][0-9]{0,2}\.[12][0-9]{0,2}\.[12][0-9]{0,2}‘ exe
执行结果为:
我们知道C的变量和shell脚本变量的定义和使用方法很不同,表达能力也不相同,C变量有各种类型,而shell脚本变量都是字符串。
字符类
字符 | 含义 |
. | 匹配任意一个字符 |
[] | 匹配括号中的任意一个字符 |
- | 在[]括号内表示字符范围 |
^ | 位于[]内的开头,匹配出括号中的字符之外的任意一个字符 |
具体使用例子
数量限定符
字符 | 含义 | 举例 |
? | 紧跟在它前面的单元匹配零次或一次 | localhost bash]$ echo "hello" | grep -E --color ‘hell?‘ hello |
+ | 紧跟在它前面的单元应匹配一次或多次 | [[email protected] bash]$ echo "helloooo" | grep -E --color ‘hello+‘ helloooo |
* | 紧跟它前面的单元应匹配零次或多次 | [[email protected] bash]$ echo "helloooo" | grep -E --color ‘hello*‘ helloooo [[email protected] bash]$ echo "helloooo" | grep -E --color ‘helo*‘ helloooo |
位置限定符
字符 | 含义 |
^ | 匹配行首的位置 |
$ | 匹配行末的位置 |
\< | 匹配单词开头的位置 |
\> | 匹配单词结尾的位置 |
\b | 匹配单词开头或结尾的位置 |
\B | 匹配单词开头和结尾的位置 |
演示结果
例子:
用下面的命令查找否和标准的IP号
grep -E ‘[1,2][0-9]{0,2}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}‘ exe
寻找否合标准的手机号
grep -E ‘1[34578][0-9]{9}‘ exe
寻找否和标准的邮箱号
grep -E ‘[123456789][0-9]{4,11}@qq\.com$‘
时间: 2024-09-26 23:07:40