使用文件名通配符模糊查找文件非常高效,而如果要在命令输出或文本中筛选内容时使用模糊查找,就需要使用正则表达式。
正则表达式是一套由多个元字符组成的模糊查找模式,使用正则表达式可以快速查找和定位文本中指定的内容。
Linux系统中许多工具都可以使用正则表达式,这些工具包括grep、awk、sed和vi等。
正则表达式主要由一些元字符和匹配模式组成,常用的元字符和匹配模式介绍如下:
1、单字符匹配符“.”
单字符匹配符“.”可以匹配任何单个字符,这个字符的功能与文件名匹配符中的“?”功能相同。
要使用正则表达式查找文本,首先需要使用元字符组成一个查找模式。与文件名通配符一样,查找模式由精确匹配字符和正则表达式的元字符组成。
2、单字符或字符串重复匹配符“*”
单字符或字符串重复匹配符“*”用来匹配单个字符或一个字符串序列的一次或多次重复出现,在匹配时可以是已经出现的字符或字符串的重复,也可以是没有出现过的字符或字符串的重复。
3、行首匹配符“^”
行首匹配符“^”用于在匹配中指示行首位置字符串或模式,因此使用时需要将行首匹配符放在要匹配的字符串或模式的前面。
4、行尾匹配符“$”
行尾匹配符“$”用于在文本的每一行的行尾匹配字符串或模式。由于其匹配的是行尾,因此在使用时应当将行尾匹配符放在匹配字符串或模式的后面。
5、反斜杠屏蔽符“”
与前面的文件名匹配符一样,反斜杠用来屏蔽一些特殊字符的特殊含义.
常见的特殊字符可能是:
注释/分隔符号:# ;等
引用符号:$ `` “”等
元字符:. * ^ $ ? [] 等
逻辑运算符和操作符:|| && 等
6、范围匹配符“[]”和排除范围匹配符“[^]”
同文件名通配符。
7、词首、词尾匹配符“<”和 “>”
8、重复次数匹配符 “{}”
(1)要匹配字母m出现次数为5次的文本:
[root@localhost test]# grep -n 'm{5}' re.txt
(2)要匹配字母m出现次数至少5次的文本:
[root@localhost test]# grep -n 'm{5,}' re.txt
(3)匹配字母m出现5次到10次的文本:
[root@localhost test]# grep -n 'm{5,10}' re.txt
9、组合并使用正则表达式
(1)0个或多个任意字符: .*
(2)空行: ^$
(3)整行: ^.*$
(4)匹配以the或The开头的所有行: ^[tT]he
(5)匹配一个IP地址: [0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}
(6)精确匹配单词love: <love>