linux shell中的正则表达式
正则表达式的使用

正则表达式,又称规则表达式。(英语:Regular Expression [ˈreɡjulə] 规则的 [ iksˈpreʃən] 表达 ),在代码中常简写为regex、regexp或RE),计算机科学的一个概念。正则表达式通常被用来检索、替换那些符合某个模式(规则)的文本。
正则表达式不只有一种,而且LINUX中不同的程序可能会使用不同的正则表达式,如:
工具:grep sed awk (这三个并称为linux中的文本三剑客)
LINUX中常用的有两种正则表达式引擎
l 基础正则表达式:BRE
l 扩展正则表达式: ERE
Shell正则表达式的组成
基础正则表达式
| 
 特别字符  | 
 描述  | 
| 
 $  | 
 匹配输入字符串的结尾位置。要匹配 $ 字符本身,请使用 \$  | 
| 
 ( )  | 
 标记一个子表达式的开始和结束位置。要匹配这些字符,请使用 \( 和 \)  | 
| 
 *  | 
 匹配前面的子表达式零次或多次。要匹配 * 字符,请使用 \*  | 
| 
 +  | 
 匹配前面的子表达式一次或多次。要匹配 + 字符,请使用 \+  | 
| 
 .  | 
 匹配除换行符 \n 之外的任何单字符。要匹配 . ,请使用 \.  | 
| 
 [  | 
 标记一个中括号表达式的开始。要匹配 [,请使用 \[  | 
| 
 ?  | 
 匹配前面的子表达式零次或一次,或指明一个非贪婪限定符。要匹配 ? 字符,请使用 \?  | 
| 
 \  | 
 将下一个字符标记为或特殊字符、或原义字符、或向后引用、或八进制转义符。例如, 'n' 匹配字符 'n'。'\n' 匹配换行符。序列 '\\' 匹配 "\",而 '\(' 则匹配 "("  | 
| 
 ^  | 
 匹配输入字符串的开始位置,除非在方括号表达式中使用,此时它表示不接受该字符集合。要匹配 ^ 字符本身,请使用 \^  | 
| 
 {  | 
 标记限定符表达式的开始。要匹配 {,请使用 \{  | 
| 
 |  | 
 指明两项之间的一个选择。要匹配 |,请使用 \| 如: Y | y  | 
| 
 定位符  | 
|
| 
 ^  | 
 匹配输入字符串开始的位置  | 
| 
 $  | 
 匹配输入字符串结尾的位置  | 
| 
 非打印字符  | 
|
| 
 \n  | 
 匹配一个换行符  | 
| 
 \r  | 
 匹配一个回车符  | 
| 
 \t  | 
 匹配一个制表符  | 
例:统计/etc/ssh/sshd_config文件中除去空行和#号开头的行的行数
[root@www ~]# grep -v "^$\|^#" /etc/ssh/sshd_config #使用基础正则表达式
[root@www ~]# grep -E -v "^$|^#" /etc/ssh/sshd_config #扩展正则表达式
[root@www ~]# egrep -v "^$|^#" /etc/ssh/sshd_config #扩展正则表达式
例2:点字符
[root@www ~]# grep .ot /etc/passwd #查找passwd文件包括.ot 的字符
root:x:0:0:root:/root:/bin/bash
operator:x:11:0:operator:/root:/sbin/nologin
setroubleshoot:x:993:990::/var/lib/setroubleshoot:/sbin/nologin
                    
                
                
            
        
浙公网安备 33010602011771号