您好,登錄后才能下訂單哦!
1. 基本的正則表達式 grep
^a 表示匹配以a開頭的行;
a$ 表示匹配以a結尾的行;
^$ 表示空白行;
. 表示匹配任意一位字符;
* 表示匹配其前面字符的任意次(可以是0次);
.* 表示匹配任意字符任意次;
\? 表示匹配前面字符1次或0次;
a\{3,5\}表示匹配前面字符的至少3次,最多5次;
[a-z] 表示匹配任意一個字母;
[a-Z] 表示匹配任意一個字母(不區分大小寫);
[1-9] 表示匹配任意數字;
[^1-9] 表示匹配不是數字;
[a-Z0-9]表示匹配數字和所有字母;
[[:alnum:]] 表示匹配數字和所有字母;
[[:space:]] 表示匹配空格;
[[:punct:]] 表示匹配標點符號
\<或\b 表示匹配<符號后面的單詞,必須做為首部出現 比如 \<abc
\>或\b 表示匹配>符號前面的單詞,必須做為尾部出現 比如 abc\>
\( \) 表示分組 一般和后向引用合用;
后向引用
\1 引用前面第一個分組
\2 引用前面第二個分組
\3 引用前面第三個分組
[root@server0 ~]# grep "\(a\)\(b\)c\1xc\1\2c" test.txt
abcaxcabc
2. 擴展的正則表達 egrep或grep -E
+ 表示匹配前面字符至少1次;
? 表示匹配前面字符1次或0次;
{} 表示匹配前面字符的多少次;
() 表示分組
| 表示或者
3.grep命令
-i 不區分大小寫
-v 取反
-o 顯示字符串本身
-n 輸出時顯示行號
-E 支持擴展正則表達式 等效 egrep
-A 顯示匹配字符的之后N行
-B 顯示匹配字符的之前N行
-C 顯示匹配字符的前后N行
-r 遞歸匹配全部文件
4.基本正則表達式應用舉例
1) 查詢/var/log/message文件中包含kernel的信息
[root@server0 ~]# grep kernel /var/log/messages
2) 查詢/etc/passwd文件中以root開頭的行
[root@server0 ~]# grep "^root" /etc/passwd
root:x:0:0:root:/root:/bin/bash
3) 查詢/etc/passwd文件中以nologin結尾的行,并計算行數
[root@server0 ~]# grep "nologin$" /etc/passwd
4) 查詢/usr/share/dict/words 文件中以a或b開頭的行
[root@server0 ~]# grep "^[a,b]" /usr/share/dict/words
5) 查詢/usr/share/dict/words文件中以不以 c,d,e,f(忽略大小寫)開頭的行,并計算行數
[root@server0 ~]# grep "^[^c-f]" /usr/share/dict/words | wc -l
6) 在/etc/passwd中選出所有不包含nologin 的行。
[root@server0 ~]# grep -v "nologin" /etc/passwd
7) 查詢/usr/share/dict/words文件中以a開頭且第三個字符是z的行
[root@server0 ~]# grep "^a.z" /usr/share/dict/words
8)查詢/usr/share/dict/words文件中以a開頭且后面跟隨5個字符的行
[root@server0 ~]# grep "^a.\{5\}$" /usr/share/dict/words
9)查詢你的系統的CPU有幾個核
[root@server0 ~]# grep "processor" /proc/cpuinfo | wc -l
10) 查詢/usr/share/dict/words文件中總共10位,且以z結尾的行。
[root@server0 ~]# grep "^.\{9\}z$" /usr/share/dict/words
11) 查詢/usr/share/dict/words文件中以 a,b,c開頭,且第5位只能為s的行
[root@server0 ~]# grep "^[a,b,c]...s" /usr/share/dict/words
12) 查詢/usr/share/dict/words文件中所有以兩位數字開頭的行
[root@server0 ~]# grep "^[1-9][1-9]" /usr/share/dict/words
13) 查詢/usr/share/dict/words文件中以a,b,c開頭的且不以a,b,c結尾行
[root@server0 ~]# grep "^[a,b,c].*[^a,b,c]$" /usr/share/dict/words
14)查詢/usr/share/dict/words文件中以小寫字母開頭,以大寫字母結尾的行
[root@server0 ~]# grep "^[a-z].*[A-Z]$" /usr/share/dict/words
5.擴展正則表達式
1)去除a.txt 空白行與#開頭的行
[root@server0 ~]# egrep -v "^$|^#" a.txt
2)搜索god good goood等字符串
[root@server0 ~]# egrep "go{1,3}d" a.txt
3)搜索gd 或者 god字符串的行
[root@server0 ~]# egrep "go?d" a.txt
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。