grep(globally search a regular expression and print)是一個強(qiáng)大的文本搜索工具。常常出現(xiàn)在管道符(|)身后,對大段的文本輸出進(jìn)行過濾,打印出與特定模式相匹配的內(nèi)容。
1. 基本用法
$ grep pattern filename
或 $ cat filename | grep pattern
或 $ grep pattern file1 file2 ...(搜索多個文件)
示例文件(numbers.txt):
1 1 1 1 1 1
2 2 2 2 2 2
3 3 3 3 3 3
4 4 4 4 4 4
5 5 5 5 5 5
six six six
seven seven seven
eight eight eight
nine nine nine
10 10 10 10
命令輸出:grep
2. -v(打印 不包含 匹配項(xiàng)的行)
grep -v
其中 -E 選項(xiàng)表示開啟擴(kuò)展正則表達(dá)式(grep -E 等同于 egrep)
添加上 -v 選項(xiàng)后輸出的是不匹配的內(nèi)容
3. -o(只輸出匹配項(xiàng)而不是默認(rèn)的整行內(nèi)容)
grep -o
4. -c(統(tǒng)計(jì)包含匹配項(xiàng)的行數(shù))
如$ grep 1 numbers.txt
輸出為 2淑廊,(即第一行 1 1 1 1 1 1 1 和最后一行 10 10 10 10,計(jì)算的是行數(shù))
5. -n(打印輸出時額外顯示行號)
grep -n
6. -i (搜索時忽略匹配模式中的大小寫)
grep -i
grep 默認(rèn)是大小寫敏感的特咆,加 -i 選項(xiàng)可以在匹配時不區(qū)分大小寫季惩。
7. -e(多個匹配模式)
grep -e
注意格式
8. 打印匹配文本之前或之后的內(nèi)容
-A n :額外打印匹配文本之后n行內(nèi)容
-B n :額外打印匹配文本之前n行內(nèi)容
grep -ABC
9. -l(搜索多個文件并查找匹配文本在哪些文件中)
$ grep -l pattern file1 file2 ...
該命令的輸出為包含 pattern 的文件名
同時可以使用 -r 選項(xiàng)對目錄進(jìn)行遞歸搜索
$ grep -r pattern dir
grep -l -r