三劍客:grep sed awk
grep:文本行過濾工具
sed: 文本行編輯器(流編輯器)
awk: 報告生成器,輸出格式化
grep包含三個命令:
grep egrep fgrep 。他們是用來進行行模式匹配的
egrep:=grep -E 使用擴展的正則表達式進行匹配
fgrep =fast grep 只使用文件通配符進行匹配
*grep默認使用正則表達式進行文本匹配
grep的用法:
grep [option] …PATTERN [filename]
grep的常用選項:
-E |
支持使用擴展正則表達式 |
-P |
使用perl語言的正則表達式引擎進行搜索(每一種語言的) |
-I |
忽略大小寫 |
-o |
僅僅輸出匹配的內容(默認輸出的是行) |
-v |
進行反選 |
--color=auto |
語法着色 |
-n |
顯示行號 |
pattern--正則表達式:
作用:通過一些特殊字符,來表示一類字符內容,然后交給前面的命令來執行。如果使用特殊本身含義,就需要\進行轉義。
1.字符匹配:
. 任意一個字符 ?
[] 范圍內的任意一個字符
[^]范圍外的任意一個字符
字符類:[:digit:] [:alnum:] [:alpha:] [:lower:] [:upper:] [:space:] [:punct:]
2.次數匹配
* 匹配前面的字符0次到n次
\?匹配前面的字符0次到1次
+ 匹配前面的字符1次到n次
\{m\}匹配前面的中字符m次
\{m,n\}匹配前面的字符m到n次
\{0,n\}匹配前面的字符0到n次
\{m,\} 匹配前面的字符至少m次
3.位置錨定
^ 錨定行首
$ 錨定行尾
\b 錨定詞首和錨定詞尾
\> 錨定詞尾
<\ 錨定詞首
4.分組
abc* abccccc abc我們要看成一個整體
\(\) 示例:\(abc\)* abcabcabc abcccc
**分組特性:默認情況下,linux系統會為分組指定變量,,變量的表示形式\1\2\3…………
(((2(5[0-5]|[0-4]\d))|[0-1]?\d{1,2})(\.((2(5[0-5]|[0-4]\d))|[0-1]?\d{1,2})){3})