前言
正则表达式通常被用来检索、替换那些符合某个模式(规则)的文本。正则表达式(Regular Expression)是一种文本模式,包括普通字符(例如,a 到 z 之间的字母)和特殊字符(称为"元字符")。正则表达式使用单个字符串来描述、匹配一系列匹配某个句法规则的字符串。
一、正则表达式
1、正则表达式定义
①正则表达式(别称):正规表达式、常规表达式
②使用字符串来描述、匹配一系列符合某个规则的字符串
③正则表达式组成
◆普通字符
大小写字母、数字、标点符号及一些其他符号
◆元字符
指在正则表达式中具有特殊意义的专用字符,可以用来规定其前导字符(即位于元字符前面的字符)在目标对象中的出现模式
2、正则表达式层次
基础正则表达式BRE
基础正则表达式是常用的正则表达式部分
除了普通字符外,常见到以下元字符
\ :转义字符,用于取消特殊符号的含义,例: \!、\n、\$等
^ :匹配字符串开始的位置,例: ^a、 ^the、 ^#、^[a-z]
$ :匹配字符串结束的位置,例: word$、 ^$匹配空行
. :匹配除\n之外的任意的一个字符,例: go.d、 g..d
* :匹配前面子表达式0次或者多次,例: goo*d、 go.*d
[list] :匹配list列表中的一个字符,例: go[ola]d, [abc]、 [a-z]、 [a-z0-9]、 [0-9]匹配任意一位数字
[^list] :匹配任意非list列表中的一个字符,例: [^0-9]、 [^A-20-9]、 [^a-z]匹配任意一位非小写字母
\{n\} :匹配前面的子表达式n次,例: go\{2\}d、 '[0-9]\{2\} '匹配两位数字
\{n,\} :匹配前而的子表达式不少于n次,例: go\{2, \}d、'[0-9]\{2, \}'匹配两位及两位以上数字
\{n,m\} :匹配前面的子表达式n到m次,例: go\{2,3\}d、 ' [0-9]\{2,3\}'匹配两位到三位数字
#注意: egrep、 awk使用{n}、{n,小、{n, m}匹配时“{}”前不用加“\”
扩展正则表达式ERE
扩展正则表达式是对基础正则表达式的扩充深化
扩展元字符如下
+ :匹配前面子表达式1次以上,例: go+d, 将匹配至少一个o, 如god、 good、 goood等
? :匹配前面子表达式0次或者1次,例: go?d, 将匹配gd或god
() :将括号中的字符串作为h一个整体,例1: g(oo)+d," 将匹配oo整体1次以上,如good、gooood等
| :以或的方式匹配字条串,例: g (oo|la)d," 将匹配good或者glad
二、文本处理工具
1、sort排序
sort是一个一行为单位对文件进行排序的工具,也可以根据不同的数据类型来排序。例如:数据和字符的排序就是不一样的
sort [选项] 参数
##参数如下:
-b 忽略每行前面开始出的空格字符。
#无法读取zn_UTF-8汉字
-k:指定排序区域,在那个区间排序
#可以读取zn_UTF-8汉字
-n 依照数值的大小排序。
-u 意味着是唯一的(unique),输出的结果是去完重了的。
-o<输出文件> 将排序后的结果存入指定的文件。
-r 以相反的顺序来排序。
-t<分隔字符> 指定排序时所用的栏位分隔字符。
也可以将sort命令与uniq命令组合使用,以实现去重并排序的需求
2、uniq去重
uniq主要是用于去除连续的重复行
注意,是连续的行,所以通常和sort命令结合使用先排序使之变成连续的行再执行去重操作,否则不连续的重复行他不能去重。
uniq [选项] 参数
##常用参数如下:
-c:在每列旁边显示该行重复出现的次数。
-d:仅显示重复出现的行列。
-f:忽略比较指定的栏位。
-s:忽略比较指定的字符。
-u:仅显示出一次的行列
3、tr修改
tr可以用一个字符来替换两一个字符,或者可以完全出去一些字符,也可以用它来出去重复字符
tr [选项]... SET1 SET2
#从标准中替换、缩减和(或)删除字符,并将结果写到标准输出
##常用参数如下:
-c:反选设定字符。也就是符合 SET1 的部份不做处理,不符合的剩余部份才进行转换
-d:删除指令字符
-s:缩减连续重复的字符成指定的单个字符
删除换行
4、cut列举
cut是常见的截取工具
cut命令从文件的每一行剪切字节、字符和字段,并将这些字节、字符和字段写至标准输出,如不制定File的参数,cut命令将会读取标准输入,所以必须要指定-b、-c或-f作为其标志
##参数说明
-b :以字节为单位进行分割。这些字节位置将忽略多字节字符边界,除非也指定了 -n 标志。
-c :以字符为单位进行分割。
-d :自定义分隔符,默认为制表符。
-f :与-d一起使用,指定显示哪个区域。
-n :取消分割多字节字符。仅和 -b 标志一起使用。如果字符的最后一个字节落在由 -b 标志的 List 参数指示的范围之内,该字符将被写出;否则,该字符将被排除
指定打印列(与awk进行比较)
注意(-b与-c 的区别)
组合监控IP端口的使用情况
总结
可以通过正则表达式来对普通字符和元字符来进行表示,需要知道基础正则表达式和扩展正则表达式的使用,这很重要!!!
认识一下简单地文本处理小工具:排序sort、uniq去重、tr修改和cut列举