正则表达式

文本搜索工具,根据用户指定的文本模式(正则表达元字符以及正常字符组合而成)对目标文件进行逐行搜索,显示能匹配到的行;

grep命令:

grep [OPTIONS] PATTERN [FILE...]

-o: 只显示被模式匹配到的内容

-i: ignore case,不区分字符大小写

-v: 显示不能够被模式匹配到的行

-E:使用扩展的正则表达式 或egrep

正则表达式:REGular EXPression REGEXP

是由元字符及正常字符所书写的模式,其中的元字符不表示字符本身的意义,而是用于表达控制或通配等功能;

基本正则表达式元字符:

字符匹配:

.  :匹配任意单个字符

[]: 匹配指定范围内的任意单个字符

[^]: 匹配指定范围外的任意单个字符

[0-9],:匹配数字0-9

[a-z]:匹配字符a-z

[:lower:]:匹配所有小写字母

[:upper:]:匹配所有大写字母

[:digit:]:匹配所有数字

[:alpha:]:匹配所有字母包括大小写

[:alnum:]:匹配所有字母和数字

[:punct:]:匹配所有的标点符号

[:space:]:匹配所有的空白字符

次数匹配:在期望匹配字符后面提供一个控制符,用于表达匹配其前面字符指定的次数

*  : 任意长度,表示0次、1次或多次;

\?:0次或1次;表示其左侧字符可有可无

\+: 1次或多次;表示其左侧字符至少出现1次

\{m\}:m次;表示其左侧字符精确出现m次;

\{m,n\}:至少m次,至多n次;

位置锚定:

^: 锚定行首:   ^PATTERN

$: 锚定行尾:   PATTERN$

^PATTERN$:用模式来匹配整行

^$: 匹配空白行;


单词锚定:由非特殊字符组成的连续的字符串

\< :锚定词首,也可用\b    \<PATTERN, 或\bPATTERN

\> :锚定词尾,也可以用\b  \> :锚定词尾,也可以用\b

\<PATTERN\>:匹配PATTERN能匹配到的整个单词



例题:

1、显示/proc/meminfo文件中以大写或小写S开头的行;用两种方式;

egrep -i ^s /proc/meminfo

2、显示/boot/grub/grub.conf中以至少一个空白字符开头的行;

egrep "^[[:space:]]+" /boot/grub/grub.conf

3、、显示/etc/rc.d/rc.sysinit文件中以#开头,后面跟至少一个空白字符,而后又有至少一个非空白字符的行;

egrep "^#[[:space:]]+[^[:space:]]+" /etc/rc.d/rc.sysinit


4、找出/etc/rc.d/init.d/functions文件中某单词后面跟一组小括号的行

Egrep -o "\<[[:alnum:]]+\>\(\)" /etc/rc.d/init.d/functions


5、找出/etc/passwd文件中的一位数或两位数;

egrep --color=auto "\<[0-9]{1,2}\>" /etc/passwd



你可能感兴趣的:(用户,表达式)