grep 是文本過濾工具,支持使用正則表達式和擴展表達式,根據編寫的模式過濾目標文本
grep 語法格式:
grep [options] pattern file
options:
--color=auto 匹配到的文本着色高亮顯示
-o 僅顯示匹配到的字符
-v: 顯示不能被模式匹配到的行
-q 不輸出任何信息
echo $? 檢驗命令是否執行成功,回顯是0,表示成功
-A# 顯示匹配到的行後#行
-B# 顯示匹配到的行前#行
-C# 顯示匹配到的行前後各#行
這裏只展示 -A#
基本正則表達式元字符
. : 匹配任意單個字符
[ ] : 匹配指定範圍內的任意單個字符
[^ ] : 匹配指定範圍外的任意單個字符
[[:upper:]]:所有大寫字母
[[:lower:]]:所有小寫
[[:alpha:]]:所有字母
[[:digit:]]:所有數字
[[:alnum:]]:所有字母和數字
[[:space:]]:所有空白字符
[[:punct:]]:所有標點符號
匹配次數:用在要指定其出現的次數的字符的後面,用於限制其前面字符出現的次數,默認工作於貪婪模式,如果執行失敗,則加上‘’引用
*:匹配其前面字符任意次;0,1多次
.*:匹配任意長度的任意字符
\?:匹配其前面的字符0次或1次;即其前面的字符可有可無,需要加‘’引用,例如'a\?'e
\*:匹配其前面的字符1次或多次,即前面的字符至少出現一次
\{m\}:匹配其前面的字符m次;
\{m,n\}:匹配其前面的字符至少m次,至多n次
\{0,n\}:至多n次
\{m,\}:至少m次
位置錨定:
^:行首錨定:^後面的字符出現在行首
$:行尾錨定:$前面的字符出現在行尾
^PATTERN$:用PATTERN來匹配整行
^$:空白行
^[[:space:]]*$:空行或者包含空白字符的行
單詞錨定
\<或\b:詞首錨定,錨定單詞在行首 ‘\<*’
\>或\b:詞尾錨定,錨定單詞在行尾
\<PATTERN\>:匹配完整單詞
分組
\(\):將一個或多個字符捆綁在一起,當做一個整體進行處理
\(xy\)*