grep與正則表達式
1、grep程序
Linux下有文本處理三劍客 -- grep 、sed 、awk
grep : 文本行過濾工具
包含三個命令:grep egrep fgrep,他們是用來驚醒行模式匹配的
egrep = grep -E //使用拓展正則表達式進行匹配
fgrep = fast grep //只是用文件通配符進行匹配
*grep 默認使用正則表達式進行文本匹配
用法:
grep [option] ... PATTERN [文件名]
常見選項(opton):
-E //支持使用拓展的正則表達式(ERE)
-P //使用Perl語言的正則表達式引擎進行搜索(每一種語言的正則表達式引 擎都不相同,甚至sed 、grep 、awk所使用的引擎也不相同)
-f //指定文件
-i //忽略大小寫
-o //僅僅輸出匹配的內容(默認輸出的是匹配到的行)
-n //顯示行號
-v //反選
--color=auto // 語法着色
-w // 匹配固定的單詞顯示所在行
Sed : 文本行編輯器(流編輯器)
awk : 報告生成器(做文本輸出格式化)
2、PATTERN -- 正則表達式
作用:
通過一些特殊字符,來表示一類字符內容,然后交給前面的命令來執行;如果使用特殊字符本身的含義就需要‘\’進行轉譯。
1、1字符匹配
. // 任意一個字符
[] // 匹配范圍內的任意一個字符
[^] // 范圍外任意一個字符
1、2次數匹配
* // 匹配前面的字符0次到n次
\? // 匹配前面的字符0次到1次
\+ // 匹配前面字符1次到n次
\{m\} // 匹配前面的一個字符m次
\{m,n\} // 匹配前一個字符m到n次
\{0,n\} // 匹配前面的字符0次到n次(0必須加)
\{m,\} // 匹配前面一個字符至少m次
1、3位置錨釘
^ // 錨定行首
$ // 錨定行尾
\b //錨定詞首或詞尾(用在前面為詞首,后面為詞尾)
\> // 錨定詞尾
\< // 錨定詞首
1、4分組
特性:
默認情況下,Linux系統會為分組指定變量,變量的表示形式\1 \2 \3 ...(后向 引用)
abc* // 我們把abc看成一個整體
\(\) // 將里面的看作是一個整體進行匹配
補充:
擴展正則表達式分組用“()”表示;
標准正則表達式中的“\”可以去掉;
*匹配IP地址的正則表達式: