grep程序
Linux下有文本處理三劍客--grep sed awk
grep:文本行過濾工具
sed:文本行編輯器(流編輯器)
awk:報告生成器(做文本輸出格式化)
grep
包含三個命令:grep egrep fgrep,它們是用來進行行模式(patter)匹配的
egrep=grep -E //使用擴展的正則表達式進行匹配
fgrep=fast grep //只使用文件通配符進行匹配
*grep默認使用正則表達式進行文本匹配*
grep的用法:
grep [option]...PATTERN [filename]
a*
grep的常見選項--option
-E 支持使用擴展的正則表達式(ERE)(regexp)
-P 使用perl語言的正則表達式引擎進行搜索(每一種語言的正則表達式引擎都不相同,甚至sed grep awk使用的regexp引擎也不相同)
-i 忽略大小
-v 進行反選
-o 僅僅輸出匹配的內容(默認輸出的是匹配到的行)
--color=auto 語法着色
-n 顯示行號
-w 匹配固定單詞
PATTERN--正則表達式
作用:用過一些特殊字符,來表示一類字符內容,然后交給前面的命令來執行;如果使用特殊字符本身含義,就要用\進行轉義
回顧:文件通配符(globbing)
*?[][^]
1、字符匹配
. 代表任意一個字符?
[] 范圍你餓的任意一個字符
[^] 范圍外任意一個字符
字符類:[:digit:][:alnum:][:alpha:][:lower:][:upper:][:space:][:punct:]
2、次數匹配
*匹配前面的字符0次到無數次
?匹配前面的字符0次到1次
+匹配前面的字符1次到多次
\{m\}匹配前面的字符m次
\{m,n\}匹配前面的字符m到n次
\{0,n\}匹配前面的字符0次到n次
\{m,\}匹配前面字符至少m次
3、位置錨定
^錨定行首
$錨定行尾
\b錨定詞首和錨定詞尾
\>錨定詞尾
\<錨定詞首
4、分組
\(\)實例:\(abc\)* abcabcabc...
**分組特性:默認情況下,Linux系統會為分組指定變量,變量的表示形式 \1 \2 \3...
示例:\(ab+\(xy\)*\),其中\1 = ab+\(xy\)*,\2=xy
abbbbxyxyxyabxy
補充:擴展的正則表達式
【標准的正則表達式中的\都可以去掉】
分組:()后向引用 \1 \2 \3...
或:|