简述正则与grep

正则表达式的定义:

计算机科学中,有一种使用单个字符串来描述、匹配一系列符合某个句法规则的字符串,它就叫做正则表达式。

正则表达式的功用:

在文本编辑器中,正则表达式通常被用来检索、替换那些符合某个模式的文本。许多程序设计语言中,也都支持正则表达式来进行字符串的操作。因此它被广泛应用到各种计算机语言和领域中。

正则表达式的分类

正则表达式就其表现形式来说,一般分为两类。基本的正则表达式和扩展的正则表达式。下面我们就此展开说明:

基本正则表达式:

字符匹配:

.匹配任意单个字符

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

[0-9],[[:digit:]]所有数字

[a-z],[[:lower:]]所有小写字母

[A-Z],[[:upper:]] 所有大写字母

[[:space:]] 空格

[[:punct:]] 所有标点符号

[[:alpha:]] 所有字母

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

[^]取反

.*匹配任意长度的任意字符

次数匹配:

*前面字符可出现任意次

\?前面字符可出现0次或1次

\{m\}前面字符要出现m次

\{m,n\}前面字符至少出现m次,至多出现n次

\{m,\}前面字符至少出现m次

\{0,n\}前面字符至多出现n次

位置锚定:

^锚定行首

$锚定行尾

^$空白行

\<锚定词首

\>锚定词尾

分组引用:

\(\)分组

\#引用


- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

扩展正则表达式:

字符匹配:

.匹配任意单个字符

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

[0-9],[[:digit:]]所有数字

[a-z],[[:lower:]]所有小写字母

[A-Z],[[:upper:]] 所有大写字母

[[:space:]] 空格

[[:punct:]] 所有标点符号

[[:alpha:]] 所有字母

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

[^]取反

.*匹配任意长度的任意字符

次数匹配:

*前面字符可出现任意次

?前面字符可出现0次或1次

+前面字符至少出现1次

{m}前面字符要出现m次

{m,n}前面字符至少出现m次,至多出现n次

{m,}前面字符至少出现m次

{0,n}前面字符至多出现n次

位置锚定:

^锚定行首

$锚定行尾

^$空白行

\<锚定词首

\>锚定词尾

分组引用:

()分组

\#引用

或者:

#|n或者

---------------------------------------------------------------------------------------------------------------------------------

grep的定义:

grep全称global search regular expression and print out the line,即全面搜索正则表达式并把行打印出来。

grep的功用:

grep是一种强大的文本搜索工具,能使用正则表达式搜索文本,并把匹配的行打印出来。

grep家族的分类

Unix的grep家族包括grep、egrep和fgrep。egrep是grep的扩展,支持更多的正则元字符。而fgrep是fixed grep或fast grep,是把所有的字母都看作单词,所以它不再支持正则表达式的应用。

grep的选项:

-v反向选取

-o显示匹配的字串,而非字串所在的行

-iignore-case,忽略字符大小写

-E支持使用扩展正则表达式

-A #显示后面#行

-B #显示前面#行

-C #显示前后#行

--color=auto将匹配内容自动添加颜色

---------------------------------------------------------------------------------------------------------------------------------

实例:

1.显示/proc/meminfo文件中以大写或小写S开头的行;

grep -i '^s' /etc/passwd

wKiom1PKk-3DvrGNAADRTyNKRBY682.jpg

2.显示/etc/passwd文件中其认shell为非/sbin/nologin的用户

grep -v "/sbin/nologin$" /etc/passwd | cut -d: -f1

wKioL1PKlbTQ0J4WAABY0FAiSMM331.jpg

3.找出/etc/passwd文件中的一位数或两位数;

grep "\<[0-9][0-9]\?\>" /etc/passwd

wKioL1PKl9zjxRscAAKKsl2cZGQ411.jpg

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

grep "^[[:space:]]\{1,\}" /boot/grub/grub.conf

wKioL1PKmFaSmAwqAAErmVKo6Ao862.jpg

相关文章

正则替换html代码中img标签的src值在开发富文本信息在移动端...
正则表达式
AWK是一种处理文本文件的语言,是一个强大的文件分析工具。它...
正则表达式是特殊的字符序列,利用事先定义好的特定字符以及...
Python界一名小学生,热心分享编程学习。
收集整理每周优质开发者内容,包括、、等方面。每周五定期发...