GREP是Global search Regular Expression and Print out the line的簡稱,即全面搜索正則表達式并把行打印出來。GREP是一種強大的文本搜索工具,也是Linux 中最廣泛使用的命令之一。本篇重點介紹grep
命令,以及grep
命令與正則表達式結合使用.
基本介紹
grep
命令由選項、模式和文件三部分組成,它在一個或多個文件中搜索滿足模式的文本行,模式后的所有字符串被看做文件名,文件名可以有多個, 支持通配符寫法,搜索的結果被打印到屏幕,不影響原文件的內容。grep
命令的選項用于對搜索過程進行補充說明,grep
命令的選項及其意義如下表所示。
選項 | 功能 |
---|---|
-i |
忽略大小寫 |
-w |
匹配單獨完整的單詞 |
-I |
僅列出符合匹配的文件,而不列出行 |
-r |
遞歸匹配 |
-n |
列出行并顯示行號 |
-v |
反向匹配 |
-c |
顯示匹配行數,不顯示內容 |
-f file |
從文件file中提取模板作為匹配模式 |
-E |
使用擴展正則表達式 |
-F |
快速匹配,不使用正則表達式 |
-A n |
打印匹配行及其后n行 |
-B n |
打印匹配行及其前n行 |
-C n |
打印匹配行及其前后n行 |
-o |
只顯示匹配到的內容 |
-q |
不輸出內容,以退出狀態表示搜索結果 |
正則表達式
將帶元字符的正則表達式用于grep
命令能夠更靈活地匹配信息,使用時需要使用單引號將正則表達式引起來,以免發生一些不可預知的錯誤。
模式 | 功能 |
---|---|
'^h' |
查找以h 符號開頭的行 |
'^$' |
匹配空白行 |
'^/.../' |
匹配以中間含有三個字符的斜線對開頭的行 |
'^/.*/' |
匹配以斜線對開頭的行,里面可以有任何內容 |
[:alpha:] |
匹配字符 |
[:digit:] |
匹配數字 |
[:alnum:] |
匹配字符或數字 |
[:word:] |
匹配單詞字符 |
實例
- 統計
/etc/init.d/functions
文件中每個單詞出現的次數并排序
grep -Eo '[[:alnum:]_]+' /etc/init.d/functions | sort | uniq -c | sort -nr
- 查找兩個文件中重復的行
$ cat test1
aa
bb
cc
ddd
eee
$ cat test2
aa
bb
ccc
dd
eee
$ grep -wf test1 test2
aa
bb
eee