正則介紹_grep

正則介紹_grepshell

正則就是一串有規律的字符串編程

各類編程語言中都有正則,原理是同樣的。編程語言

grep/egrep   sed   awk    是shell腳本「三劍客」server

grep (-c  -i  -n   -v     -r   -A   -B   -C )字符串

-c  行數   -n 行號it

-i 不區分大小寫awk

-v 取返原理

-r  把子目錄和孫目錄下面全部的文件遍歷一遍sed

若是不加-r  配置

-A後邊跟數字,過濾出符合要求的行以及下面n行

-B後邊跟數字,過濾出符合要求的行以及上面n行

-c後邊跟數字,過濾出符合要求的行以及上下各n行

grep/egrep示例

[root@serverlooker-01 grep]# grep '[0-9]' passwd

[0-9] 表示方括號裏面的任意一個字符

 

[root@serverlooker-01 grep]# grep -v '[0-9]' passwd
只要帶數字的都不要

(:set nu 加上行號,方便查看)

---

以#開頭的行
[root@serverlooker-01 grep]# grep -n '^#' /etc/inittab

把文件拷貝到當前目錄下 [root@serverlooker-01 grep]# cp /etc/inittab ./

改動一下當前目錄下的inittab (不要改etc下的,可能會致使系統啓動不了)

(把15行過濾出來了)

之後看能會看不少跟服務相關的配置文件,配置文件裏會有不少以#開頭的行,是爲了解釋說明,因此看起來可能會很亂,因此能夠用這種方法過濾。

--

放到[ ] 裏面,是方括號裏面字符的反義,和放到外面是不同的。表示取 非

[root@serverlooker-01 grep]# grep '[^0-9]' inittab

以非數字開頭的行,列出來

[root@serverlooker-01 grep]# grep '^[^0-9]' inittab

以數字開頭的行:

---

. 表示任意的一個字符。

* 表示 :*左邊的字符重複0-n次

.* 表示任意一個任意字符

[root@serverlooker-01 grep]# grep '.*' passwd

---

[root@serverlooker-01 grep]# grep '{2}' passwd

這樣寫不表示任何意義,就表示一個花括號。在正則當中{ }用來表示一個範圍,真正的寫法:

[root@serverlooker-01 grep]# grep 'o{2}' passwd  表示o出現2次,但直接這樣寫不識別,須要作一個脫義:[root@serverlooker-01 grep]# grep 'o\{2\}' passwd

還能夠表示一個範圍:   ({}表示前面這個字符的重複範圍)

若是不想寫\,能夠用egrep 或者grep -E

表示一個總體:

+ 表示+前面這個字符的1次或者屢次,(*是0次或屢次)

[root@serverlooker-01 grep]# grep 'o\+o' passwd

 

?表示 ?前面字符的0次或1次重複

| 表示或者,能夠寫多個

---

以下這些特別重要:

.

*

.*

+

?

^

$

---

OK.

相關文章
相關標籤/搜索