正則表達式之grep ,egrep

. 任意一個字符

* 零個或多個*前面的字符

.* 零個或多個任意字符,即所有

egrep

+ 一個或多個+前面的字符

? 零個或一個?前面的字符

|  或者

[a-Z] 任意英文字母

[0-9] 任意數字

^[0-9] 以數字開頭

^[^0-9] 以非數字開頭

[0-9]$ 以數字結尾

^[a-Z] 以英文字母開頭

^[^a-Z] 不以英文字母開頭

[a-Z]$ 以英文字母結尾

‘^$’ 表示空行

‘^#’ #開頭

grep

語法:grep [-cinvABC]  ‘word’  filename

-c 打印符合要求的行數

-i 忽略大小寫

-n 打印時連同行號一起顯示

-v 取反

-A 後跟一個數字n,打印時連同下面n行一起打印

-B 後跟一個數字n,打印時連同上面n行一起打印

-C 後跟一個數字n,打印時上下n行一起打印

-r 把目錄下所有文件遍歷一遍

例:

1grep -n 'root' /etc/passwd  //過濾包含關鍵字的行並顯示行號

wKioL1NZGDzRgDnzAAB-S4ncYWM276.jpg

2grep -nv 'root' /etc/passwd //過濾不包含關鍵字的行並顯示行號

wKiom1NZGGbD8yyqAAC-Oox2zPo574.jpg

3grep -i 'root' 1.txt  //過濾關鍵字時忽略大小寫

wKioL1NZGDySiIEkAABlZZlFywg012.jpg

4grep -ic 'root' 1.txt  //過濾關鍵字時忽略大小寫且只顯示行數

wKiom1NZGGaTywbPAAAsJ96ZxDk948.jpg

5grep '[0-9]' /etc/passwd  //過濾包含數字的行

wKiom1NZGGaw8RdVAACqacKqvHw137.jpg

6grep -v '[0-9]' 1.txt  //過濾不包含數字的行

7grep -v '^#' 1.txt  //過濾以#號開頭的行

8grep -v '^#' 1.txt |grep -v '^$' //去除以#號開頭的行和所有空行

9grep '^[a-Z]' 1.txt  //過濾以英文字母開頭的行

10grep '^[^0-9]' 1.txt //過濾以非數字開頭的行

11grep 'r.o' 1.txt  //過濾包含任意一個字符的行

wKioL1NZGD2RLpIpAABrHDkiI10476.jpg

12grep 'r*o' 1.txt //過濾包含零個或多個*前面字符的行

wKioL1NZGD6zPprVAABr0boc2D8088.jpg

13grep 'o\{2\}' 1.txt  //過濾字符的次數,2可以隨意更改

wKiom1NZGWny02pkAAB16mlQvpU190.jpg

14grep 'root' *.txt  

//顯示當前目錄下所有txt文件中包含root的行(默認顯示文件名)

wKioL1NZGD-R34Q5AACm6zXO_cM253.jpg

15grep -h 'root' *.txt  

//顯示當前目錄下所有txt文件中包含root的行,-h 不顯示文件名

wKiom1NZGGigw2x1AACZJYZUZKY637.jpg

egrep  grep的擴展

1egrep 'o+' 1.txt  //過濾1個或多個+前面的字符

wKioL1NZGWSDFLPoAADXw7no1-M205.jpg

2egrep '(oo)+' 1.txt //過濾1個或多個‘oo

wKiom1NZGaTS4-UxAACZeQCVzoU074.jpg

3egrep 'o?' 1.txt //過濾0個或1個?前面的字符

wKioL1NZGbfxDMDtAADcD2hx_kM812.jpg

4egrep 'roo|body' 1.txt //過濾包含|前面或者後面的字符

wKioL1NZGbjD-AuBAACZPjmMTXQ509.jpg

5egrep 'r(o|a)o' 1.txt //過濾包含roorao的字符

wKiom1NZGeHjjlrBAAB0ArH8XjU011.jpg


grep 和egrep 還可以過濾兩個或多個關鍵詞

grep -E 'abc|123' 1.txt

egrep 'abc|123' 1.txt

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章