格式:grep [-cinvABC] 'word' filename正則表達式
grep -c 'root' passwd 統計passwd 裏面包含root的行數bash
grep -i 'root' passwd 把passwd文件中包含root(字母不區分大小寫) 打印到輸出界面ide
grep -n 'root' passwd 把passwd文件中包含root的行打印出來,且顯示第幾行工具
grep -v 'root' passwd 把passwd文件中不包含root 的行打印出來ci
grep -r 'root' /etc/ 查找/etc目錄下全部子目錄子文件中包含root的行字符串
grep -A2 'root' passwd 打印出包含root的行和下面兩行it
grep -B2 'root' passwd 打印出包含root的行和上面兩行class
grep -C2 'root' passwd 打印出包含root的行和上面兩行,下面兩行,總共五行基礎
1,過濾出帶有某個關鍵詞的行,並輸出行號file
[root@jinkai01 grep]# grep -n 'root' passwd
打印出包含 root 的行
2,過濾出不帶有某個關鍵詞的行,並輸出行號
[root@jinkai01 grep]# grep -nv 'root' passwd
打印出不包含 root 的行
3,過濾出全部包含數字的行(只要有一個數字匹配到就算)
[root@jinkai01 grep]# grep '[0-9]' passwd
將passwd 中包含 數字0-9的行打印出來
4,過濾出全部不包含數字的行
[root@jinkai01 grep]# grep -v [0-9] inittab
將passwd 中不包含數字 0-9的行打印出來
5,過濾掉全部以#開頭的行 (這裏麪包含了空行)
[root@jinkai01 grep]# grep -v '^#' inittab
將inittab 文件中不是以 #號開頭的行打印出來,空行也算
6,過濾掉全部空行和以#開頭的行
[root@jinkai01 grep]# grep -v '^#' inittab | grep -v '^$'
將inittab文件中不是以#號開頭的行且非空行打印出來
在正則表達式中,^表示行的開始,$表示行的結尾,那麼空行則能夠用^$表示。
7,打印出不以英文字母開頭的行
[root@jinkai01 grep]# grep '^[^a-zA-Z]' a.txt 打印出以非字母開頭的行
123
456
#fdasffd
[root@jinkai01 grep]# grep '[^a-zA-Z]' a.txt 打印出包含非字母的行
123
456
abc134
#fdasffd
A123
8,過濾出任意一個字符和重複字符
[root@jinkai01 grep]# grep 'r.o' passwd
. 表示任意一個字符,r.o表示r 和 o 之間有任意一個字符的,例如 包含roo的就能夠打印出來
root:x:0:0:root:/root:/bin/bash
[root@jinkai01 grep]# grep 'oo*' passwd
- 表示零個或多個前面的字符,oo 表示一個o爲基礎o能夠是零個或者多個,因此o oo ooo。。。都包含在內
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
*表示零個或多個任意字符,空行也包含在內
9,指定要過濾出的字符出現次數
grep 'o \{2 \}' passwd 篩選出o重複出現兩次
這裏用到了符號{},其內部爲數字,表示前面的字符要重複的次數。須要強調的是,{}左右都須要加上轉義字符\。另外,使用「{ }」還能夠表示一個範圍,具體格式爲{n1,n2},其中n1 < n2,表示重複n1到n2次前面的字符,n2還能夠爲空,這時表示大於等於n1次
10,過濾出一個或多個指定的字符
egrep 'o+' passwd 篩選出包含o 的一個或多個字符
和grep不一樣,這裏egrep使用的是符號+,它表示匹配1個或多個+前面的字符,這個「+」是不支持 被grep直接使用的。包括上面的{},也是能夠直接被egrep使用,而不用加\轉義。示例以下
egrep o{2} passwd = grep 'o{2}' passwd
11,過濾出零個或一個指定的字符
egrep 'o?' passwd
?表明o到1個任意字符
12,過濾出字符串 1 或者字符串 2
egrep 'aa|11|oo' passwd
將passwd 中包含aa或11或oo的行打印出來
13,egrep 中 () 的應用
egrep 'r(oo|at)o' passwd 篩選出 rooo或rato 字符這裏用()表示一個總體,上例中會把包含rooo或者rato的行過濾出來,另外也能夠把()和其餘符號組合在一塊兒,例如(oo)+就表示1個或者多個oo。以下所示:egrep '(oo)+' passwd