1. 程式人生 > 實用技巧 >grep和正則表達

grep和正則表達

先來說說正則表示式

規定一些特殊語法表示字元類、數量限定符和位置關係,然後用這些特殊語法和普通字元一起表示一個模式,這就是正則表示式(Regular Expression)。


“正則表示式”就像“變數”一樣,它 是一個廣泛的概念,而不是某一種工具或程式語言的特性。


wKiom1dvND-xIn3QAABAskK7N7c706.png

改正:下面 ? 是前導單元匹配零次或一次

wKiom1dvOKnzTELjAAA_KsDFFSc414.png


wKiom1dvQfegXXGeAABGc2LXiXE228.png

wKioL1dvROyh25J3AAAdm0eeKz8613.png

詳解:http://www.cnblogs.com/afarmer/archive/2011/08/29/2158860.html


grep

1、簡介

Linux系統中grep(global search regular expression(RE) and print out the line,全面搜尋正則表示式並把行打印出來)是一種強大的文字搜尋工具,它能使用正則表示式搜尋文字,並把匹配的行打印出來


grep可以找出符合某個模式(Pattern)的一類字串


grep的工作方式是這樣的,它在一個或多個檔案中搜索字串模板。如果模板包括空格,則必須被引用,模板後的所有字串被看作檔名。搜尋的結果被送到螢幕,不影響原檔案內容。


注意正則表示式引數用單引號括起來了,因為正則表示式中用到的很多特殊字元在Shell中也有特殊含義(例如\),只有用單引號括起來才能保證這些字元原封不動地傳給grep命令,而不會被Shell解釋掉。


Unix的grep家族包括grep、egrep和fgrep。egrep和fgrep的命令只跟grep有很小不同。egrep是grep的擴充套件,支援更多的re元字元, fgrep就是fixed grep或fast grep,它們把所有的字母都看作單詞,也就是說,正則表示式中的元字元表示回其自身的字面意義,不再特殊,它只搜尋固定字串而不搜尋正則表示式模式,不會按正則表示式的語法解釋後面的引數。linux使用GNU版本的grep。它功能更強,可以通過-G、-E、-F命令列選項來使用egrep和fgrep的功能。


grep的正則表示式有Basic和Extended兩種規範


2、格式

grep [-options]

3、引數及其含義

-V, --version 顯示軟體版本資訊

-E 使用擴充套件規範

--color=auto 將匹配的關鍵字加上顏色顯示

-e

-q,--quiet,--silent 不顯示任何資訊

-c 只顯示匹配行的個數

-i 忽略大小寫

-n 顯示匹配行及行號

-v 顯示除匹配行之外的所有行

-l 列出檔案內容符合指定的範本樣式的檔名稱
-L 列出檔案內容不符合指定的範本樣式的檔名稱

-m

-a

-s 不顯示錯誤資訊



例項:

1、字元類測試:wKioL1dvNArhxDcWAAARcqVGZzk274.png

wKioL1dvNAryInijAAAStpwgf6M235.png

2、數量限定符測試:

wKioL1dvOMKwR1b4AAAaBGVk9Iw808.png

3、位置限定符測試:wKiom1dvQhuyaLBxAAAcAS2iNHY321.png

wKiom1dvQxmxEFvGAAAn7gANAYw641.png


測試:

1、-c選項

wKioL1dvToeyyJl3AAALsdNw5zk229.png

2、-i選項

wKioL1dvToeBb1UmAAARJyuZ14Y892.png

3、-n選項

wKiom1dvToiTZ92WAAAOmUqcdN8419.png

4、-v選項

wKiom1dvTomCBDVMAAANVIDga0s740.png

5、-l -L選項

wKioL1dvUK3idlQYAAAPOeA55Nw813.png

轉載於:https://blog.51cto.com/lingdandan/1792970