正则表达式,又称正规表达式、常规表达式
使用字符串来描述、匹配一系列符合某个规则的字符串
正则表达式组成:
**普通字符:**大小写字母、数字、标点符号及一些其他符号
**元字符:**在正则表达式中具有特殊意义的专用字符
工具:grep sed awk egrep
正则表达式–通常用于判断语句中,用来检查某一字符串是否满足某一格式
正则表达式是由普通字符与元字符组成
普通字符包括大小写字母、数字、标点符号及一些其他符号
元字符是指在正则表达式中具有特殊意义的专用字符,可以用来规定其前导字符(即位于元字符前面的字符)在目标对象中的出现模式
LINUX中常用的有两种正则表达式引擎
基础正则表达式:BRE
扩展正则表达式:ERE
基础正则表达式是常用的正则表达式部分
除了普通字符外,常见到以下元字符
\:转义字符,用于取消特殊符号的含义
例:\!、\n等
^:匹配字符串开始的位置
- 例:^a、^the、^#
$:匹配字符串结束的位置
例:word$
.:匹配除\n之外的任意的一个字符
例:go.d、g..d
*:匹配前面子表达式0次或者多次
例:goo* d、 go.*d
[^list]:匹配任意不在list列表中的一个字符
例:[^a-z]、[^0-9]、[^A-Z0-9]
\{n,m\}:匹配前面的子表达式n到m次,有\{n\}、\{n,\}、\{n,m\}三种格式
例:go\{2\}d、go\{2,3\}d、go\{2,\}d
支持egrep、awk
扩展正则表达式是对基础正则表达式的扩充深化
扩展元字符
+:匹配前面子表达式1次以上
例:go+d,将匹配至少一个o
?:匹配前面子表达式0次或者1次
例:go?d,将匹配gd或god
():将括号中的字符串作为一个整体
例:(xyz)+,将匹配xyz整体1次以上,如xyzxyz
|:以或的方式匹配字条串
例:good|food,将匹配good或者food
例2:g(oo|la)d,将匹配good或者glad
\n匹配一个换行符
\r匹配一个回车符
\t匹配一个制表符
grep [选项]… 查找条件 目标文件
-E:开启扩展(EXTEND)的正则表达式
-c:计算找到'搜寻字符串'的次数
-i:忽略大小写的不同,所以大小写视为相同
-o:只显示被模式匹配到的字符串
-v:反向选择,亦即显示出没有'搜寻字符串'内容的那一行!(反向查找,输出与查找条件不相符的行)
--color=auto:可以将找到的关键词部分加上颜色的显示!
-n:顺便输出行号
方法一:grep -c root /etc/passwd
方法二:cat /etc/passwd | grep root
grep -i "the" /etc/passwd #不区分大小写查找目录下含有the的行
grep -v root /etc/passwd #取反查找,将没有root的行显示出来
grep -n 'the' test.txt
取反查找,查找不带有"the"字符行,
grep -vn 'the' test.txt
在正则表达式内"[^]"是取反查找的意思
以点结尾
grep -n '^$' test.txt #"^$"结合,需要查询空白行时,执行该命令即可显示出对应的行
正则表达式内"."表示任意字符
如下示例,
grep -n 'w..d' test.txt #可以查找到'w'和'd'之间两位任意字符组成的行,以w开头,d结尾
重复符
grep -n 'ooo*' test.txt #查询多个o字符的行
grep -n 'wo*d' test.txt #查询以w开头,d结尾,中间至少有一个o的字符行,
grep -n 'w.*d' test.txt #查询以w开头,d结尾,中间字符任意可有可无的字符
grep -n '[0-9]*' 查询任意数字所在行
grep -n 'o\{2\}' test.txt #只显示两个oo的字符行
grep -n 'o\{2,5\}' test.txt #查询以w开头d结尾的,中间包含2个o的字符串
cut命令从文件的每一行剪切字节、字符和字段并将这些字节、字符和字段至标准输出,如果不指定File参数,cut命令将读取标准输入,必须指定-b、-c或-f标志之一
选项:
-b:按字节截取
-c:按字符截取,常用于中文
-d:指定以什么为分隔符截取,默认为制表符
-f:通常和-d一起
-b分割字符,-c既可以分割字符也可以分割中文
sort是一个以行作为单位对文件内容进行排序的工具,也可以根据不同的数据类型来排序,例如数据和字符的排序就不一样
sort [选项] 参数
常用选项
-t:指定分隔符,默认使用[Tab] 键或空格分隔
-k:指定排序区域,哪个区间排序
-n:按照数字进行排序,默认是以文字形似排序
-u:等同于uniq,表示相同的数据仅显示一行,注意:如果行尾有空格去重就不成功
-r:反向排序,默认是升序,-r就是降序
-o:将排序后的结果转存至指定文件
-f:忽略大小写,会将小写的字母都转换为大写字母来进行比较
-b:忽略每行前面的空格
去除连续的重复行
uniq [选项] 参数
-c:对重复的行进行计数
-d:仅显示重复行
-u:仅显示出现一次的行
不连续的重复行不算做重复行
tr [选项] … SET1 [SET2]
从标准输入中替换、缩减和/或删除字符,并将结果写到标准输出
常用选项:
-d 删除字符
-s 删除所有重复出现的字符,只保留第一个
文件内所有a字母换成p字母
替换字符不对等的情况下,相同字符识别后一个,未对应字符不识别的时候,以最后一个字符为准
在本篇文章中,主要讲解了基础正则表达式元字符的用法,扩展正则表达式元字符的用法,grep命令的使用方法;以及文本处理器常用的小工具命令(cut、sort、uniq、tr)