grep命令是一種強大的文本搜索工具,它能使用正則表達式搜索文本,並把匹配的行顯示出來,
grep的基本常用命令:
-o: 只顯示被模式匹配到的內容
-i: ignore case,不區分字符大小寫
-v: 顯示不能夠被模式匹配到的行
-E:使用擴展的正則表達式
-A#:顯示匹配到的行及後面#行
-B#:顯示匹配到的行及前面#行
-C#:顯示匹配到的行及前後#行
grep --color=auto 這個是命令是把匹配到的行進行着色,但是每次這樣寫太麻煩,我們可以對grep定義別名,例如:
alias grep=‘grep --color=auto'
正則表達式:是由元字符及正常字符所書寫的模式,其中的元字符不表示字符本身的意義,而是用於表達控制或通配等功能;在正則表達式中元字符如果要表示自身的意義,而非通配符的意義,需要在元字符前面加\符號。
基本正則表達式: grep
擴展正則表達式: grep -E, egrep
基本正則表達式元字符:
字符匹配:
. :匹配任意單個字符
[]: 匹配指定範圍內的任意單個字符
[^]: 匹配指定範圍外的任意單個字符
次數匹配:在期望匹配字符後面提供一個控制符,用於表達匹配其前面字符指定的次數
* : 任意長度,表示0次、1次或多次;
.*: 任意長度的任意字符;工作於貪婪模式
\?:0次或1次;表示其左側字符可有可無
\+: 1次或多次;表示其左側字符至少出現1次;
\{m\}:m次;表示其左側字符精確出現m次;
\{m,n\}:至少m次,至多n次;
\{0,n\}:至多n次;
\{m,\}:至少m次;
位置錨定:
^: 錨定行首
^PATTERN
$: 錨定行尾
PATTERN$
^PATTERN$:用模式來匹配整行;
^$: 匹配空白行;
單詞錨定:由非特殊字符組成的連續的字符串
\< :錨定詞首,也可用\b
\> :錨定詞尾,也可以用\b
\<PATTERN\>:匹配PATTERN能匹配到的整個單詞
分組:\(\)
擴展的正則表達式:
字符匹配:
. :匹配任意單個字符
[]: 匹配指定範圍內的任意單個字符
[^]: 匹配指定範圍外的任意單個字符
次數匹配:
*: 任意次
?:0或1次
+: 至少1次
{m}:精確匹配m次;
{m,n}:至少m次,至多次;
{m,}:至少m次;
{0,n}:至多次;
位置錨定:
^
$
\<, \b
\>, \b
分組:
()
引用:\1, \2, ...
或者:a|b:a或者b
或者兩側的所有內容;
從上面的內容來看,其實基本正則表達式和擴展正則表達式在命令和功能來說基本上沒什麼區別,擴展正則表達式用起來更省力點,多了個或者(a|b)的功能而已。