Linux基础:正则表达式
学习Linux并且想在Linux技术圈子里,有所发展,那么shell scripts为必学课程,shell scripts 没有固定的语法,并介于程序实际语言与命令之间的,形式和功能上更接近与前者,但并不是用户程序开发,无需编译。这个程序是纯文本文件的,将一些shell的语法和指令(包括外包指令)写在里面。搭配正则表达式。管道或别的功能实现我们的想要处理目的。
经过上面的介绍,我们提到正则表达式,命令和一些程序设计语言,这篇文章中,我先介绍下正则表达式的用法。
说的简单点正则表达式就几个符号:
^ 只匹配行首
$ 只匹配行尾
\ 用来屏蔽一个元字符的特殊含义,因为有时在shell中一些元字符有特殊含义,可以用\使其失去原有的意义
. 匹配任意单字符
* 一个单子符后紧跟*,匹配0个或多个此单字符
[] 匹配[]内字符,可以是一个单字符,也可以是字符序列。也可以用- 表示[]内字符的序列范围,如用[1-5][a-z]
duyunlong\{n\} 用来匹配前面duyunlong出现的次数。n为次数
^符号的用法
可以看到,在名为duyunlong的目录底下有很多文件,如果我想找出以h开头的文件
这样就找出了,自己想要的文件,反之匹配行尾用$,
如果想要找文件开头第三个字母为e的文件,我们用下面的命令,并了解 英文句号. 的用法,如下图
除此之外,还可以用^$来查找空行
下面来看看\转意字符的用法,有时候需要查找一些字符串,而他们包含了系统指定为特殊字符的一个字是特殊字符?一般意义上讲,下列字符可以认为是特殊字符:
$ . ' " * [] ^ | ( ) \ + ?
假定要匹配包含字符"." 的各行而 "." 代表匹配任意单字符的特殊字符,因此需要屏蔽其含义。操作如下:
\.
上述模式不认为反斜杠后面的字符是特殊字符,而是一个普通的字符,及英文句点。
假定要匹配包含^的各行,将反斜杠放在它们的前面就可以屏蔽其特殊含义。如下:
\^
如果要在正则表达式中匹配以*.jpg结尾的文件,可以做如下操作
\*\.jpg
使用[]匹配一个范围或集合
使用[]匹配特定的字符串或字符串集,可以哟个逗号将括号内要匹配的不同字符集分开,但并不强制要这样做(一些系统提倡在复杂的表达式中使用逗号),这样就可以增加模式的可读性。
使用"-"来表示字符串的范围,表明字符串的范围从" -"左边的字符开始到" - "右边的字符结束。
如果熟知一个字符串匹配操作,应该常用[]模式
假定要匹配任意一个数字,可以使用:
[0123456789]
然后用"-"符号来简化
[0-9]
字母的话
[a-z],
如要匹配任意字母
[a-zA-Z]
如要匹配任意数字或是字母,模式如下
[A-Za-z0-9]
在字符序列结合使用中,可以用[]指出字母的范围。假定匹配一个单词,以s开头,中间的任意一个字母,以t结尾那么操作如下:
a[a-z A-Z]t