一、正则表达式: 能用某种模式去匹配一类字符串的公式,由一串字符和元字符组成。
元字符: 表示的是一个单词开始或结束的位置。以下介绍一些比较常用的元字符.
1 “.” 符号
点符号用于匹配除换行符之外的任意一个字符。例如在/etc/passwd中搜索出包含r,紧跟着1个字符,后面再接t:
在/etc/passwd中搜索出包含r,紧跟着2个字符,后面再接t:
2. “*” 符号
"*"符号用于匹配前一个字符0次或任意多次。当与.符号一起用,例如 ".* "表示任意长度的不包含换行的字符。在/etc/passwd搜索 r*t
在/etc/passwd搜索 r.*t
3. “\{n,m\}” 符号
\{n,m\}精确控制匹配的重复次数,使用方法主要有三种:
- \{n\}:匹配前面的字符n次.例如搜索ro\{2\}t
- \{n,\}:匹配前面的字符至少n次以此(包含n次).例如搜索ro\{1,\}t
- \{n,m\:匹配前面的字符n次到m次.例如搜索ro\{1,3\}t
4. “^” 符号
尖角号符号用于匹配开头的字符。例如搜索^sy
5. “$” 符号
$符号用于匹配尾部,例如搜索以s开头,中间包含任意字符串,并以n结尾的
6. “[]” 符号
方括号:用于匹配方括号内出现的任一字符。例如:
也可写成以下方式,注意"-"不是充当一个字符。
若搜索所有字母也可写成[A-Za-z]。若匹配的不是大写的字母,则可以在方括号里使用^,代表取反。
7. “\” 符号
“\” 符号代表转义。例如.*代表的是任意长度的不包含换行的重复字符。但如果想要匹配任意长度的点号,则需要写成\.*
8. “\<“和”\>” 符号
"\<“和”\>“分别用于界定单词的左边界和右边界。比如说用”<hello"用以匹配以hello开头的单词;比如说用"hello>"用以匹配以hello结尾的单词。两个一起使用用于精确匹配一个字符串。例如:
[root@node1 etc]# echo 'helloworld' | grep '\<hello\>'
[root@node1 etc]# echo 'hello' | grep '\<hello\>'
hello
二.扩展的正则表达式
扩展的正则表达式是对基础正则表达式的一些补充。但需要注意的是使用这些扩展的符号时,需要使用egrep命令。例如:
- “?”: 用于匹配前一个字符0次或者1次
- “+”: 用于匹配前一个字符1次以上
- “|”:'表达或的意思,即多种可能的罗列,彼此间是一种分支关系
- “()”: 通常和"|"符号联合使用,用于枚举一系列可替换的字符。