一、正则表达式
1、概念:
通俗的说,正则表达式就是处理字符串的方法,它是以行为单位来进行字符串的处理行为,正则表达式通过一些特殊符号的辅助,可以让用户轻易达到查找、删除、替换某特定字符串的处理程序。
2、作用:
管理系统时,查看系统文件信息,通过正则表达式就可以很轻松的搞定某字符的特定处理。
3、分类:
基础正则表达式和扩展正则表达式。
二、基础正则表达式
1、特殊符号:
(1)[:alnum:] 代表英文大小写字符及数字,即0-9,a-z,,A-Z
(2)[:alpha:] 代表任何英文大小写字符,即a-z,A-Z
(3)[:upper:] 代表大写字符, 即A-Z
(4)[:lower:] 代表小写字符,即a-z
(5)[:digit:] 代表数字而已,即0-9
2、符号练习:
(1)查找特定的字符串:
查找regular_express.txt中的the字符
查找出去the字符的其他字符
查找忽略大小写的字符the
(2)利用中括号[]来查找集合字符:
查找test和taste这两个单词,他们有一个字符差别
中括号[]里不管有几个字符,它都代表某“一个”字符
(3)行首与行尾字符^$:
查找只出现在行首的the
查找只出现在行尾的.
查找空白行
(4)任意一个字符.与重复字符*:
.(小数点):代表一定有一个任意字符的意思
*(星号):代表重复前一个字符0到无穷多次的依次
(5)限定连续RE字符范围{}:
查找2~5个o的连续字符串
3、符号总结:
(1)^word :待查找的字符串(word)在行首
(2)word$:待查找的字符串(word)在行尾
(3). :代表一定有一个任意字符的字符
(4)\ :转义字符,将特殊符号的特殊意义去掉
(5)* :重复前一个字符0个到无穷多次
(6)[list] :从list列表里找出想要的字符
(7)[n1-n2]:从字符集合里找出想要选取的字符范围
(8)[^list] :找出非list列出的字符
(9)\{n,m\}:连续n到m个的前一个重复字符
\{n\}:连续n个前一个RE字符
\{n,\}:连续n个以上的前一个RE字符
4、sed工具:
(1)作用:将standard input数据进行替换、删除、新增、选取特定行等的功能
(2)语法:sed [-nefri] [动作]
(3)参数:
-n:安静模式,一般,所有来自stdin的数据都会被列出到屏幕上,但如果加上-n参数,则只有经过sed特殊处理的那一行才会被列出
-e:直接在命令行模式上进行sed的动作编辑
-f:直接将sed动作写在一个文件内,-f filename 则可以执行filename内的sed动作
-r:sed动作支持的是扩展型正则表达式的语法(默认是基础正则表达式)
-i:直接修改读取的文件内容,而不是由屏幕输出
动作说明:[n1[,n2]]function
n1,n2:不见得会存在,一般代表选择进行动作的行数,举例来说,如果我的动作是需要在10到20行之间进行的,则“10,20[动作行为]”
function有下面这些参数:
a:新增,a的后面可接字符串,而这些字符串会在新的一行出现(目前的下一行)
c:替换,c的后面可接字符串,这些字符串可以替换n1,n2之间的行
d:删除,d后面不接任何字符
i:插入,i后面可以接字符串,而这些字符串会在新的一行出现(目前的上一行)
p:打印,也就是将某个选择的数据打印出来
s:替换,可以直接进行替换的工作
(4)例子:
1) 以行为单位的新增或删除功能
删除:
新增:
2)以行为单位的替换与显示功能
将第2~5行的内容替换成为“No 2-5 number”
仅列出文件中的第5-7行
3)部分数据的查找并替换的功能
格式:sed 's/要被替换的字符串/新的字符串/g'
提取ip地址:
4)直接修改文件内容
sed -i 可以直接修改文件的内容
三、扩展正则表达式
扩展正则表达式的特殊符号
(1)+ :重复一个或一个以上的前一个RE字符
(2)? :0个或一个的前后一个RE字符
(3)| :用或的方式找出数个字符串
(4)( ) :找出组字符串
(5)( )+ :多个重复组的判别