grep中正則匹配的使用

如要匹配Computer或computer兩個單詞,可作以下操做:
[Cc]mputer

「.」容許匹配ASCII集中任意字符,或爲字母,或爲數字。

使用\{\}匹配模式結果出現的次數

匹配字母A出現兩次,並以B結尾,操做以下:
A\{2\}B
匹配A至少4次,使用:
A\{4,\}B
如給出出現次數範圍,例如A出現2次到4次之間:
A\{2,4\}B

在grep命令中輸入字符串參數時,最好將其用雙引號括起來。例如:「mystring」。這樣作
有兩個緣由,一是以防被誤解爲shell命令,二是能夠用來查找多個單詞組成的字符串,例如:
「jet plane」,若是不用雙引號將其括起來,那麼單詞plane將被誤認爲是一個文件,查詢結果
將返回「文件不存在」的錯誤信息。

在grep命令中輸入字符串參數時,最好將其用雙引號括起來。例如:「mystring」。
這樣作有兩個緣由:
一是以防被誤解爲shell命令,
二是能夠用來查找多個單詞組成的字符串,例如:「jet plane」,
若是不用雙引號將其括起來,那麼單詞plane將被誤認爲是一個文件,查詢結果將返回「文件不存在」的錯誤信息。

在調用變量時,也應該使用雙引號,諸如:grep "$MYVAR"文件名,若是不這樣,將沒有返回結果。
在調用模式匹配時,應使用單引號。

使用grep抽取精確匹配的一種更有效方式是在抽取字符串後加\>。假定如今精確抽取48,方法以下:[???????????]
#grep "48\>" data.f

#grep -n "48\>" data.f          #顯示行號

缺省狀況下,grep是大小寫敏感的,如要查詢大小寫不敏感字符串,必須使用-i開關。


使用正則表達式時最好用單引號括起來

假定要抽取代碼爲484和483的城市位置,
#grep '48[34]' data.f

若是要抽出記錄,使其行首不是48,
#grep '^[^48]' data.f

抽取以L開頭,以D結尾長度爲5個字符的全部代碼,可以使用下述方法:
#grep 'L...D' data.f

查詢全部以5開始以1996或1998結尾的全部記錄
#grep '5..199[68]' data.f

第一個字符爲任意數字,第二個字符在0到5之間,第三個字符在0到6之間:
#grep '[0-9][0-5][0-6]' data.f
#grep '^[0-9][0-5][0-6]' data.f          #以行首開始

抽取包含數字4至少重複出現兩次的全部行:
#grep '4\{2,\}' data.f

grep命令加-E參數,這一擴展容許使用擴展模式匹配。
例如,要抽取城市代碼爲219或216,方法以下:
#grep -E '219|216' data.f

結合使用^和$可查詢空行。使用- n參數顯示實際行數:
#grep -n '^$' data.f

匹配特殊字符查詢有特殊含義的字符,諸如$.'"*[]^|\+?,必須在特定字符前加\。
假設要查詢包含「.」的全部行,腳本以下:
#grep '\.' data.f
#grep '\"' data.f

如要查詢文件名conftroll.conf(這是一個配置文件),腳本以下:
#grep 'conftroll\.conf' myfile

最多六個小寫字符,後跟句點,接着是兩個大寫字符,
#grep '[a-z]\{1,6\}\.[A-Z]\{1,2\}' filename.deposit

grep中通配符*的使用
#grep 'l.*s' testfile           #匹配如"looks"
#grep 'oo*' testfile           #匹配如"looks"

在全部文件中查詢行尾包含單詞device的全部行
#grep 'device$' *

查詢目錄列表中的目錄,方法以下:
#ls -l | grep '^d' 
在一個目錄中查詢不包含目錄的全部文件,方法以下:
#ls -l | grep '^[^d]' 
要查詢其餘用戶和其餘用戶組成員有可執行權限的目錄集合,方法以下:
#ls -l | grep '^d....x..x'


#ls 列出文件目錄(能夠含子目錄)及文件的完整路徑 [1] [2]
一、列出當前目錄的文件、文件夾完整路徑
   ls -1 |awk '{print i$0}' i=`pwd`'/'

二、列出當前目錄及子目錄的文件、文件夾完整路徑
   ls -R |awk '{print i$0}' i=`pwd`'/'

2b) 列出當前目錄及子目錄下的文件夾完整路徑
    ls -FR | grep /$ | sed "s:^:`pwd`/:" 

三、用find實現,好像運行要慢些
   find / -name "*.*" -exec ls {} \;

四、遞歸列出當前目錄及子目錄名稱
    ls -FR | grep /$

五、遞歸列出當前目錄及子目錄名稱,包括相關屬性
    ls -lR | grep "^d"
    # drwxr-xr-x 3 idea idea  4096 Aug  2  2009 images

六、只列出當前目錄下的子目錄
    用ls只列出子目錄
    ls -d */

#grep空格 [1]
grep搜索帶空格的字符串須要使用'\ '來轉義空格
用 "\s"


#grep查找tab [1]
其實在linux中要正確匹配tab(退格)符有兩種方式
1:用 grep  $'\t'       你的文件
2:用 grep '按CTRL+V 鍵,再按TAB鍵'      你的文件


#更多詳細用法 [1]
相關文章
相關標籤/搜索