[命令]grep

  1. 功能
    文本搜索,包括打印內容也可以搜索,可以使用正則表達式

  2. 用法
    grep [option] [pattern] [filename]

  3. option

  • 匹配控制選項
-e: 使用PATTERN作爲搜索模式。指定字符串做爲查找文件內容的樣式。   
-f: 指定規則文件,其內容含有一個或多個規則樣式,讓grep查找符合規則條件的文件內容,格式爲每行一個規則樣式。
-i: 搜索時候忽略大小寫
-r/R: 遞歸搜索文件,當搜索對象不是文件而是目錄時使用。
-v: 反轉匹配,選擇沒有被匹配到的內容。
-w:匹配整詞,精確地單詞,單詞的兩邊必須是非字符符號(即不能是字母數字或下劃線)
-x:僅選擇與整行完全匹配的匹配項。精確匹配整行內容(包括行首行尾那些看不到的空格內容都要完全匹配)
  • 一般輸出選項
-c:計算匹配的數量。
-L:列出文件內容不符合指定的範本樣式的文件名稱
-l : 列出文件內容符合指定的範本樣式的文件名稱。
-m [num]:指定顯示結果的行數。當匹配內容的行數達到num行後,grep停止搜索,並輸出停止前搜索到的匹配內容
-o: 只輸出匹配的具體字符串,匹配行中其他內容不會輸出
-q:安靜模式,不會有任何輸出內容,查找到匹配內容會返回1,未查找到匹配內容就返回非0
-s:不會輸出查找過程中出現的任何錯誤消息,-q和-s選項因爲與其他系統的grep有兼容問題,shell腳本應該避免使用-q和-s,並且應該將標準和錯誤輸出重定向到/dev/null 代替。
  • 輸出前綴選項
-b:輸出每一個匹配行(或匹配的字符串)時在其前附加上偏移量(即從文件第一個字符到該匹配內容之間的字節數)
-H:在每一個匹配行之前加上文件名一起輸出(針對於查找單個文件),當查找多個文件時默認就會輸出文件名
-h:禁止輸出文件名的前綴。無論查找幾個文件都不會在匹配內容前輸出文件名
-n:輸出匹配內容的同時輸出其所在行號。
-T:初始標籤確保實際行內容的第一個字符位於製表位上,以便對齊標籤看起來很正常。在匹配信息和其前的附加信息之間加入tab以使格式整齊。
  • 匹配下上文控制選項
-A [num]:匹配到搜索到的行以及該行下面的num行
-B [num]:匹配到搜索到的行以及該行上面的num行
-C [num]:匹配到搜索到的行以及上下各num行
  1. 實例
  • 多個文件同時查找
grep "pattern_str" file1 file2
  • 使用正則表達式進行匹配
grep -E "[1-9]+"
或
egrep "[1-9]+"
  • 在當前目錄下搜索字符串‘text’,並顯示其所在行數
grep "text" . -r -n
# .表示當前目錄。
  • 使用-e進行多個匹配規則
echo this is a text line | grep -e "is" -e "line" -o
is
line
  • 在grep搜索結果中包括或者排除指定文件
#只在目錄中所有的.php和.html文件中遞歸搜索字符"main()"
grep "main()" . -r --include *.{php,html}
#在搜索結果中排除所有README文件
grep "main()" . -r --exclude "README"
#在搜索結果中排除filelist文件列表裏的文件
grep "main()" . -r --exclude-from filelist
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章