關於匹配的實例:
統計所有包含“48”字符的行有多少行
grep -c "48" demo.txt
不區分大小寫查找“May”所有的行)
grep -i "May" demo.txt
顯示匹配字符“48”的行及行號
grep -n "48" demo.txt
顯示輸出沒有字符“48”所有的行)
grep -v "48" demo.txt
顯示輸出以字符“48”開頭,並在字符“48”后是一個tab鍵所在的行
grep '48[[:blank:]]' demo.txt
顯示輸出以字符“48”開頭,第三個字符是“3”或是“4”的所有的行)
grep "48[34]" demo.txt
顯示輸出行首不是字符“48”的行)
grep "^[^48]" demo.txt
顯示輸出第一個字符以“M”或“m”開頭,以字符“ay”結束的行)
grep "[Mm]ay" demo.txt
顯示輸出第一個字符是“K”,第二、三、四是任意字符,第五個字符是“D”所在的行)
grep "K…D" demo.txt
顯示輸出第一個字符的范圍是“A-D”,第二個字符是“9”,第三個字符的是“D”的所有的行
grep "[A-D][9]D" demo.txt
顯示第一個字符是3或5,第二三個字符是任意,以1998結尾的所有行
grep "[35]..1998" demo.txt
顯示輸出字符“4”至少重復出現2次的所有行
grep "4\{2,\}" demo.txt
顯示輸出字符“9”至少重復出現3次的所有行
grep "9\{3,\}" demo.txt
顯示輸出字符“9”重復出現的次數在一定范圍內,重復出現2次或3次所有行
grep "9\{2,3\}" demo.txt
顯示輸出空行的行號
grep -n "^$" demo.txt
如果要查詢目錄列表中的目錄 同:ls -d *
ls -l |grep "^d"
在一個目錄中查詢不包含目錄的所有文件
ls -l |grep "^[d]"
查詢其他用戶和用戶組成員有可執行權限的目錄集合
ls -l |grpe "^d…..x..x"
假定要抽取代碼為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]\{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'