如要匹配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]
1、列出當前目錄的文件、文件夾完整路徑
ls -1 |awk '{print i$0}' i=`pwd`'/'
2、列出當前目錄及子目錄的文件、文件夾完整路徑
ls -R |awk '{print i$0}' i=`pwd`'/'
2b) 列出當前目錄及子目錄下的文件夾完整路徑
ls -FR | grep /$ | sed "s:^:`pwd`/:"
3、用find實現,好像運行要慢些
find / -name "*.*" -exec ls {} \;
4、遞歸列出當前目錄及子目錄名稱
ls -FR | grep /$
5、遞歸列出當前目錄及子目錄名稱,包括相關屬性
ls -lR | grep "^d"
# drwxr-xr-x 3 idea idea 4096 Aug 2 2009 images
6、只列出當前目錄下的子目錄
用ls只列出子目錄
ls -d */
#grep空格 [1]
grep搜索帶空格的字符串需要使用'\ '來轉義空格
用 "\s"
#grep查找tab [1]
其實在linux中要正確匹配tab(退格)符有兩種方式
1:用 grep $'\t' 你的文件
2:用 grep '按CTRL+V 鍵,再按TAB鍵' 你的文件
#更多詳細用法 [1]