linux grep命令詳解


Linux系統中grep命令是一種強大的文本搜索工具,它能使用正則表達式搜索文本,並把匹 配的行打印出來。grep全稱是Global Regular Expression Print,表示全局正則表達式版本,它的使用權限是所有用戶。

grep (global search regular expression(RE) and print out the line,全面搜索正則表達式並把行打印出來)是一種強大的文本搜索工具,它能使用正則表達式搜索文本,並把匹配的行打印出來。

Unix的grep家族包括grep、egrep和fgrep。egrep和fgrep的命令只跟grep有很小不同。egrep是grep的擴展,支持更多的re元字符, fgrep就是fixed grep或fast grep,它們把所有的字母都看作單詞,也就是說,正則表達式中的元字符表示回其自身的字面意義,不再特殊。linux使用GNU版本的grep。它功能更強,可以通過-G、-E、-F命令行選項來使用egrep和fgrep的功能。

文件字符搜索

grep能夠快速的對文件進行搜索,命令和參數都比較好理解:

grep [-acinv] [--color=auto] '搜尋字符串' filename

選項與參數:

  • -a :將 binary 文件以 text 文件的方式搜尋數據
  • -c :計算找到 '搜尋字符串' 的次數
  • -i :忽略大小寫的不同,所以大小寫視為相同
  • -n :順便輸出行號
  • -v :反向選擇,亦即顯示出沒有 '搜尋字符串' 內容的那一行!
  • --color=auto :可以將找到的關鍵詞部分加上顏色的顯示喔!

為了方便使用這個命令,先建立一個用來測試的文件,文件的內容如下:

The Wrong Man
1956 film by Alfred Hitchcock
The Wrong Man is typical of most of his films. In The Wrong Man he appears only in silhouette, just before the credits at the beginning of the film, where he tells a darkened studio that the story is true.

搜索含有Man的句子:

root@ubuntu:~# grep -n Man  grep_text.txt 
1:The Wrong Man
3:The Wrong Man is typical of most of his films. In The Wrong Man he appears only in silhouette, just before the credits at the beginning of the film, where he tells a darkened studio that the story is true.

其中 -n 為顯示出有搜索到的句子在第幾行。其他的參數同樣可以使用如:

root@ubuntu:~# grep -n -i -v Man  grep_text.txt 
2:1956 film by Alfred Hitchcock 
4:

可以對照上面對參數的說明,-n -i -v ,其中-v是顯示搜索不到的行數。

作為命令的管道進行搜索

在linux的命令中,有些命令顯示了大量的內容,不容易查看可以通過grep過濾,得到想要的結果,如命令ps ax 顯示了大量的,使用grep過濾相關進程。

	root@ubuntu:~# ps ax | grep -n python
149:  5574 pts/0    Tl     0:00 /usr/bin/python /usr/local/bin/scrapy crawl iiSpider
150:  5589 pts/0    T      0:00 /usr/bin/python /usr/local/bin/scrapy crawl ccSpider
151:  5714 pts/0    T      0:00 /usr/bin/python /usr/local/bin/scrapy crawl ddSpider

正則匹配

grep的正則跟其他語言的正則表達式有一些不同,認識到grep里的規則,就能容易寫出grep的過濾條件。

RE(正則表達式)

  • ^ 匹配正則表達式的開始行
  • $ 匹配正則表達式的結束行
  • < 從匹配正則表達式的行開始
  • > 到匹配正則表達式的行結束
  • [ ] 單個字符;如[A] 即A符合要求
  • [ - ] 范圍 ;如[A-Z]即A,B,C一直到Z都符合要求
  • . 所有的單個字符
    • 所有字符,長度可以為0
  • \ 忽略正則表達式中特殊字符的原有含義

查看帶數字的行:

root@ubuntu:~# grep -n [0-9]  grep_text.txt 
2:1956 film by Alfred Hitchcock 

查看The開頭的行

root@ubuntu:~# grep -n ^The  grep_text.txt 
1:The Wrong Man
3:The Wrong Man is typical of most of his films. In The Wrong Man he appears only in silhouette, just before the credits at the beginning of the film, where he tells a darkened studio that the story is true.

更多教程:阿貓學編程


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM