1 grep用法
grep [options] regex [file...]
2 grep參數(shù)
選項描述:
-i 忽略大小寫。不會區(qū)分大小寫字符。也可用--ignore-case 來指定帜消。
-v 不匹配猪勇。通常设褐,grep 程序會打印包含匹配項的文本行。這個選項導致 grep 程序 只會不包含匹配項的文本行泣刹。也可用--invert-match 來指定助析。
-c 打印匹配的數(shù)量(或者是不匹配的數(shù)目,若指定了-v 選項)椅您,而不是文本行本身外冀。 也可用--count 選項來指定。
-l 打印包含匹配項的文件名掀泳,而不是文本行本身锥惋,也可用--files-with-matches 選項來指定。
-L 相似于-l 選項开伏,但是只是打印不包含匹配項的文件名膀跌。也可用--files-without-match 來指定。
-n 在每個匹配行之前打印出其位于文件中的相應行號固灵。也可用--line-number 選項來指定捅伤。
-h 應用于多文件搜索,不輸出文件名巫玻。也可用--no-filename 選項來指定丛忆。
3 正則表達式
正則表達式的元字符包括
^ $ . [ ] { } - ? * + ( ) | \
3.1 任意字符.
$ cat /usr/share/dict/words> mywords.txt
$ grep Kell. mywords.txt
Keller
Kelley
Kelley's
Kelli
Kelli's
Kellie
Kellie's
Kellogg
Kelly
輸出文件中包含'Kell'的文件。.
為任意字符仍秤,所以合計5個字符,其中第五個字符為任意字符熄诡。
3.2 錨點
^
起始點
$
終止點
$ grep '^keyb' mywords.txt
keyboard
keyboard's
keyboarded
keyboarder
keyboarder's
keyboarders
keyboarding
keyboards
$ grep '^kid$' mywords.txt
kid
下面這個可以查找特定單詞
$ grep '^.ite$' mywords.txt
bite
cite
kite
lite
mite
nite
rite
site
注意^$
匹配空行,這個命令很有用诗力,可以刪除空行
3.3 中括號表達式和字符類
中括號表達式凰浮,能夠指定 一個字符集合(包含在不加中括號的情況下會被解釋為元字符的字符)來被匹配。
$ grep 'h[ae]lly' mywords.txt
Shelly
Shelly's
lethally
只要包含hally或helly即可匹配到。
3.4否定
正則表達式中的第一個字符是插入字符^
袜茧,則剩余字符被看作是被排除的字符菜拓。
grep '[^kb]nike' words
moniker
moniker's
monikers
可見,得到的是包含‘nike’笛厦,但前面的字符是除‘k’和‘b’之外的任意字符纳鼎。中括號內,^不是錨定作用了裳凸,是‘非’的意思贱鄙。
3.5傳統(tǒng)的字符區(qū)域
比如,想找出以字母abcdefg開頭姨谷,ike結尾的單詞
$ grep '^[a-i]ike' words
bike
bike's
biked
biker
biker's
bikers
bikes
dike
dike's
diked
dikes
hike
hike's
hiked
hiker
hiker's
hikers
hikes
$ grep '^[A-Ka-i]elly' words
Kelly
belly
belly's
bellyache
bellyache's
bellyached
bellyaches
bellyaching
bellybutton
bellybutton's
bellybuttons
bellyful
bellyful's
bellyfuls
bellying