Linux基础:正则表达式

学习Linux并且想在Linux技术圈子里,有所发展,那么shell scripts为必学课程,shell scripts 没有固定的语法,并介于程序实际语言与命令之间的,形式和功能上更接近与前者,但并不是用户程序开发,无需编译。这个程序是纯文本文件的,将一些shell的语法和指令(包括外包指令)写在里面。搭配正则表达式。管道或别的功能实现我们的想要处理目的。

经过上面的介绍,我们提到正则表达式,命令和一些程序设计语言,这篇文章中,我先介绍下正则表达式的用法。

说的简单点正则表达式就几个符号:

^  只匹配行首

$  只匹配行尾

\   用来屏蔽一个元字符的特殊含义,因为有时在shell中一些元字符有特殊含义,可以用\使其失去原有的意义

.   匹配任意单字符

*  一个单子符后紧跟*,匹配0个或多个此单字符

[]  匹配[]内字符,可以是一个单字符,也可以是字符序列。也可以用- 表示[]内字符的序列范围,如用[1-5][a-z]

duyunlong\{n\} 用来匹配前面duyunlong出现的次数。n为次数

^符号的用法

Linux基础:正则表达式

可以看到,在名为duyunlong的目录底下有很多文件,如果我想找出以h开头的文件

Linux基础:正则表达式

这样就找出了,自己想要的文件,反之匹配行尾用$,

如果想要找文件开头第三个字母为e的文件,我们用下面的命令,并了解 英文句号.  的用法,如下图

Linux基础:正则表达式

除此之外,还可以用^$来查找空行

下面来看看\转意字符的用法,有时候需要查找一些字符串,而他们包含了系统指定为特殊字符的一个字是特殊字符?一般意义上讲,下列字符可以认为是特殊字符:

$  .   '  "  *  []  ^  |  ( )  \  +  ?

假定要匹配包含字符"." 的各行而 "." 代表匹配任意单字符的特殊字符,因此需要屏蔽其含义。操作如下:

\.

上述模式不认为反斜杠后面的字符是特殊字符,而是一个普通的字符,及英文句点。

假定要匹配包含^的各行,将反斜杠放在它们的前面就可以屏蔽其特殊含义。如下:

\^

如果要在正则表达式中匹配以*.jpg结尾的文件,可以做如下操作

\*\.jpg

使用[]匹配一个范围或集合

使用[]匹配特定的字符串或字符串集,可以哟个逗号将括号内要匹配的不同字符集分开,但并不强制要这样做(一些系统提倡在复杂的表达式中使用逗号),这样就可以增加模式的可读性。

使用"-"来表示字符串的范围,表明字符串的范围从"  -"左边的字符开始到" -    "右边的字符结束。

如果熟知一个字符串匹配操作,应该常用[]模式

假定要匹配任意一个数字,可以使用:

[0123456789]

然后用"-"符号来简化

[0-9]

字母的话

[a-z],

如要匹配任意字母

[a-zA-Z]

如要匹配任意数字或是字母,模式如下

[A-Za-z0-9]

在字符序列结合使用中,可以用[]指出字母的范围。假定匹配一个单词,以s开头,中间的任意一个字母,以t结尾那么操作如下:

a[a-z A-Z]t

相关推荐