1.基本正则
num | 符号 | 实际意思 |
---|---|---|
1 | ^ | 首字符 |
2 | $ | 尾字符 |
3 | [集合] | 集合内的单个字符 |
4 | [^集合] | 集合内不能有单个字符 |
5 | . | 任意单个字符 |
6 | * | 前一个字符的任意次 |
7 | {n,m} | 前一个字符n到m次 |
8 | {n,} | 前一个字符至少n次 |
9 | {n} | 前一个字符n次 |
Example:
- grep root /etc/passwd
- grep ^root /etc/passwd
- grep root$ /etc/passwd
- grep . /etc/passwd
- grep r.*t /etc/passwd
- grep “[abc]” /etc/passwd
- grep “[^ab]” /etc/passwd
- grep “[0-9]*” /etc/passwd
- grep “[0-9]{3,4}” /etc/passwd
- grep “[0-9]{3}” /etc/passwd
2.扩展正则
num | 符号 | 实际意思 |
---|---|---|
1 | + | 至少1次以上 |
2 | ? | 前面的字符0或1次 |
3 | () | 组合,类似于"" |
4 | | | 保留 |
5 | {n,m} | 前一个字符n到m次 |
6 | {n,} | 前一个字符至少n次 |
7 | {n} | 前一个字符n次 |
Example:
- grep -E “0{2,3}” /etc/passwd
- grep -E “[0-8]+” /etc/passwd
- grep -E “s?bin” /etc/passwd
- grep -E “(root|daemon)” /etc/passwd
- echo “ababab”| grep ab
- echo “ababab”| grep -E “(ab){2}”
-E:表示使用扩展正则
3.Perl正则
num | 符号 | 实际意思 |
---|---|---|
1 | \b | 匹配单词边界 |
2 | \B | 匹配非单词边界 |
3 | \w | 匹配字符数字下划线 |
4 | \W | 和\w相反 |
5 | \s | 匹配空白 |
6 | \d | 匹配数字 |
7 | \d+ | 匹配多个数字 |
8 | \D | 非数字 |
Example:
- grep -P ”\broot\b” /etc/passwd
- grep -P ”\w” /etc/passwd
- grep -P ”\s /etc/passwd
-P:表示使用Perl正则
4.见多识广
- /[1-9][0-9]*/
- /[0-9]{1,2}/
- exp1(?=exp2):查找 exp2 前面的 exp1
- /^Chapter [1-9][0-9]{0,1}$/
- /ter\b/
- /[1-9][0-9]{0,1}/
5.grep 参数
num | 参数 | 实际意思 |
---|---|---|
1 | -i | 忽略大小写 |
2 | -v | 取反 |
3 | -w | 匹配单词 |
4 | -q | 不显示到屏幕 |
5 | -E | 扩展正则 |
6 | -P | Perl正则 |
7 | -c | 只输出匹配行的数量 |
8 | -n | 显示行号 |
9 | -l | 只列出符合匹配的文件名,不列出行 |
10 | -h | 查询多文件不显示文件名 |
11 | -s | 不显示不存在,错误信息不显示 |
12 | -x | 匹配整行 |
13 | -r | 递归搜索 |
14 | -bo | 打印匹配行距文件头部的偏移量,以字节为单位 |