一,什么是正則?
1,正則就是用一些具有特殊含義的符號組合到一起來描述字符或字符串的方法。
2在linux中,通配符是由shell解釋的,而正則表達式則是由命令解釋的,下面我們就為大家介紹三種文本處理工具/命令:grep、sed、awk,它們三者均可以解釋正則。
二、grep
1,grep -n 顯示行號;
2、grep -o :只顯示匹配的內容;
3、grep -q :靜默模式,沒有任何輸出,得用$?來判斷執行成功沒有,即有沒有過濾到想要的內容;
4、grep -l :如果匹配成功,則只將文件名打印出來,失敗則不打印
5、grep -A :如果匹配成功,則將匹配行及其后n行一起打印出來
6 、grep -B :如果匹配成功,則將匹配行及其前n行一起打印出來
7、grep -C :如果匹配成功,則將匹配行及其前后n行一起打印出來
8、grep -c :如果匹配成功,則將匹配到的行數打印出來
9、grep -E :等於egrep,擴展
10、grep -i :忽略大小寫
11、grep -v :取反,不匹配
12,、grep -w:匹配單詞
三、grep種類
grep
fgrep
pgrep
egrep
正則介紹
^ 行首
$ 行尾
. 除了換行符以外的任意單個字符
* 前導字符的零個或多個
.* 所有字符
[] 字符組內的任一字符
[^] 對字符組內的每個字符取反(不匹配字符組內的每個字符)
^[^] 非字符組內的字符開頭的行
[a-z] 小寫字母
[A-Z] 大寫字母
[a-Z] 小寫和大寫字母
[0-9] 數字
\< 單詞頭 單詞一般以空格或特殊字符做分隔,連續的字符串被當做單詞
\> 單詞尾
擴展正則 sed 加 -r 參數 或轉義
grep 加 -E 或 egrep 或轉義
AWK 直接支持 但不包含
{n,m} 可以使用--posix支持
[root@MiWiFi-R3-srv ~]# awk '/ro{1,3}/{print}' /etc/passwd
[root@MiWiFi-R3-srv ~]# awk --posix '/ro{1,3}/{print}' /etc/passwd
sed -n '/roo\?/p' /etc/passwd sed -rn '/roo?/p' /etc/passwd
? 前導字符零個或一個
+ 前導字符一個或多個
abc|def abc或def
a(bc|de)f abcf 或 adef
x\{m\}
x出現m次 x\{m,\}
x出現m次至多次(至少m次)
x\{m,n\} x出現m次至n次