正则表达式

1. 字符匹配

.  匹配任意单个字符,可以是一个汉字

[]  匹配指定范围内的任意单个字符,实例:[abc!@#$..] [0-9] [a-z] [a-zA-Z]

[^]  匹配指定范围外的任意单个字符,示例:[^abc!@#%..]

[:alnum:]  字母和数字

[:alpha:]  代表任何英文大小写字符,亦即A-Z,a-z

[:lower:]  小写字母,示例[[:lower:]],相当于[a-z]

[:upper:]  大写字母

[:blank:]  空白字符(空格和制表符)

[::space]  水平和垂直的空白字符(比[:blank:])包含范围广

[:cntrl:]  不可打印的控制字符(退格、删除、警铃。。。)

[:digit:]  十进制数字

[:xdigit:]  十六进制数字

[:graph:]  可打印的非空白字符

[:print:]  可打印字符

[:punct:]  标点符号

 

举例

ls /etc/rc.d |grep 'rc[0-6]'

 

 2. 匹配次数

*   匹配前面字符任意次,包括0次,贪婪模式:尽可能长的皮配,如:a*  表示a出现的任意次数。

.*  任意长度的任意字符

\?  匹配其前面的字符0或1次,即:可有可无

\+  匹配其前面字符至少1次,即:肯定有,>=1

\{n\}  匹配前面的字符至少1次,即:a\{10\}

\{m,n\}  匹配前面的字符至少m次,至多n次

\{,n\}  匹配前面的字符至多n次,<=2的意思

\{n,\}  匹配前面的字符至少n次

 

3.位置锚定

^  行首锚定,用于模式的最左侧

$  行尾锚定,用于模式的最右侧

^PATTERN$  用于模式匹配行

^$  空行

^[[:space:]]*$  空白行

\<或\b  词首锚定,用于单词模式的左侧

\>或\b  词尾锚定,用于单词模式的右侧

\<PATTERN>\  匹配整个单词

举例

grep "^[#]" /etc/fstab   #输出以#开头的行

grep "^[^#]" /etc/fstab   #排除以#开头的行

 

4.分组

分组: ()将多个字符捆绑在一起,当作一个整体处理,如:(root)+

\(string1)\(string2\)

 

举例

 cat /etc/passwd | grep "^\(.*\>\).*\<\1$"    # 匹配行尾和行首相同的字符串

 

 

df -hT|egrep -o "([0-9]+%)"   # 匹配只显示磁盘使用率

 

posted on 2021-10-07 12:01  Colin88  阅读(14)  评论(0编辑  收藏  举报