Linux學習-10月16(grep)
9.1 正則介紹_grep
9.2 grep中
9.3 grep下
一、什麼是正則
- 正則就是一串有規律的字串,包括各種特殊符號
- 掌握正則對於編寫shell有很大幫助
- 各種程式設計中都有正則,原理是一樣的
二、grep簡介
grep命令用來過濾字元
用法:
grep [-cinvrABC] 'word' filename
- -c:統計
- -n:顯示行
- -i:不區分大小寫
- -r:遍歷所有的子目錄
- -v:取反
- -A:後面跟數字,過濾出符合要求的行及下面n行
- -B:同上,過濾出符合要求的行及上面n行
- -C:同上,過濾出符合要求的行及上下n行
grep常用操作
- grep -n ‘root’ passwd
匹配‘root’並顯示行號
- grep -vn 'root' passwd
匹配非"root"行並顯示行號
- grep -A2 'root' passwd
匹配“root”行,並顯示以下兩行。
- grep -B2 'root' passwd
匹配“root”行,並顯示以下兩行。
- grep -C2 'root' passwd
匹配“root”行,並顯示上下兩行。
四、grep正則操作
- grep '[0-9]' /etc/inittab
匹配帶數字的行,[0-9]就是0到9的意思
- grep -v '^#' passwd
匹配以非“#”開頭的行,^表示以什麼開頭
- grep '[^0-9]' test
匹配所有非數字 ,把^符號放在[]中就是非的意思。
- grep '^[^0-9]' test
匹配所有以非數字開頭的行
- grep 'r.ot' passwd
匹配所有“rxot”的行,”"."代表任意一個字元
- grep 'o*o' passwd
"*"代表*左邊的字元重複0-n次,也就是一個o也會匹配,ooo....多個也會匹配
- grep '.*' passwd
".*"表示貪婪匹配,所有的都會被匹配
- grep 'o\{2\}' passwd
{n}中指定次數,指花括號左邊字元的重複範圍
如:grep 'o\{2\}' 會把兩個oo匹配到
- 在grep中使用+ {} () | 需要時\進行脫意。不想脫意可以使用 egrep 或者 grep -E
- grep -E '(oo){2}' passwd
()表示組合的意思。
- grep 'o\+o' passwd
類似於*,不同的是+是1-n次,*是0-n次,如下圖單個o不會被匹配到
- grep ‘o?t’ passwd
?表示左邊字元的重複次數為0或者1
- grep -E 'root|test' passwd
'|'表示或者,比如以上就是匹配‘root’或者‘test’的意思
以上操作都不會修改檔案,如果想要修改可以加上-i引數即可。