Grep
https://www.cnblogs.com/end/archive/2012/02/21/2360965.html
主要參數(shù)
[options]主要參數(shù):
-c:只輸出匹配行的計(jì)數(shù)。
-I:不區(qū)分大 小寫(只適用于單字符)。
-h(huán):查詢多文件時(shí)不顯示文件名。
-l:查詢多文件時(shí)只輸出包含匹配字符的文件名。
-n:顯示匹配行及 行號(hào)。
-s:不顯示不存在或無(wú)匹配文本的錯(cuò)誤信息。
-v:顯示不包含匹配文本的所有行。
pattern正則表達(dá)式主要參數(shù):
\: 忽略正則表達(dá)式中特殊字符的原有含義。
^:匹配正則表達(dá)式的開始行。
$: 匹配正則表達(dá)式的結(jié)束行。
\<:從匹配正則表達(dá) 式的行開始。
\>:到匹配正則表達(dá)式的行結(jié)束。
[ ]:?jiǎn)蝹€(gè)字符,如[A]即A符合要求 。
[ - ]:范圍,如[A-Z],即A、B、C一直到Z都符合要求 。
。:所有的單個(gè)字符。
* :有字符,長(zhǎng)度可以為0。
grep命令使用簡(jiǎn)單實(shí)例
ls -l | grep '.jar' 查找當(dāng)前目錄中的所有JAR文件
grep 'test' d* 顯示所有以d開頭的文件中包含測(cè)試的行。
grep 'test' aa bb cc 顯示在AA,BB,CC文件中匹配測(cè)試的行。 //不加引號(hào)也可以
grep ‘[a-z]\{5\}’ aa 顯示所有包含每個(gè)字符串至少有5個(gè)連續(xù)小寫字符的字符串的行。 // 這里的\不能去掉,否則不行
grep -E '[a-z]{5}' aa? ? //如果用egrep或grep -E,就不用”\”號(hào)進(jìn)行轉(zhuǎn)義
常用grep實(shí)例
(1)多個(gè)文件查詢
? ? grep "sort" *.doc? ?? ? #見文件名的匹配
(2)行匹配:輸出匹配行的計(jì)數(shù)
? ? grep -c "48" data.doc? ?#輸出文檔中含有48字符的行數(shù)
(3)顯示匹配行和行數(shù)
? ? grep -n "48" data.doc? ?? ? #顯示所有匹配48的行和行號(hào)
(4)顯示非匹配的行
? ? grep -vn "48" data.doc? ?? ?#輸出所有不包含48的行
(4)顯示非匹配的行
? ? grep -vn "48" data.doc? ?? ?#輸出所有不包含48的行
(5)大小寫敏感
? ? grep -i "ab" data.doc? ?? ? #輸出所有含有ab或Ab的字符串的行
4, 正則表達(dá)式的應(yīng)用
(1)正則表達(dá)式的應(yīng)用 (注意:最好把正則表達(dá)式用單引號(hào)括起來(lái))
? ? grep '[239].' data.doc? ?? ?#輸出所有含有以2,3或9開頭的,并且是兩個(gè)數(shù)字的行
(2)不匹配測(cè)試
? ? grep '^[^48]' data.doc? ?? ?#不匹配行首是48的行
(3)使用擴(kuò)展模式匹配
? ? grep -E '219|216' data.doc
(4) ...
? ? 這需要在實(shí)踐中不斷應(yīng)用和總結(jié),熟練掌握正則表達(dá)式。
5, 使用類名
可以使用國(guó)際模式匹配的類名:
[[:upper:]]? ?[A-Z]
[[:lower:]]? ?[a-z]
[[:digit:]]? ?[0-9]
[[:alnum:]]? ?[0-9a-zA-Z]
[[:space:]]? ?空格或tab
[[:alpha:]]? ?[a-zA-Z]
(1)使用
? ? grep '5[[:upper:]][[:upper:]]' data.doc? ???#查詢以5開頭以兩個(gè)大寫字母結(jié)尾的行