Linux學習之十一egrep及擴充套件正則表示式(egrep)
阿新 • • 發佈:2019-01-21
一、egrep及擴充套件正則表示式:
REGEXP:REGular EXPression
1、正則表示式:
Basic REGEXP:基本正則表示式
Extended REGEXP:擴充套件正則表示式
2、擴充套件正則表示式:Extended REGEXP
字元匹配:
.:任意單個字元
[]:範圍內的任意單個字元
[^]:範圍外的任意單個字元
次數匹配:
*:其前字元任意次
?:其前字元0次或1次
+:其前字元至少1次,相當於正則表示式中'\{1,\}'
{m,n}:匹配其前字元至少m次,至多n次
位置錨釘:
^:錨釘行首
$:錨釘行尾
\<:錨釘詞首
\>:錨釘詞尾
分組:
():後向引用
\1:引用第一個左括號以及與之對應的右括號所包含的所有內容
\2:引用第二個左括號以及與之對應的右括號所包含的所有內容
\3:引用第三個左括號以及與之對應的右括號所包含的所有內容
或者:
|:表示或者(or),如a|b,表示匹配a或者b
例1:[ [email protected] ~]# grep -E --colour 'C|cat' test6.txt
cat
Cat
C
China
例2:[[email protected] ~]# grep -E --colour '(C|c)at' test6.txt
cat
Cat
3、grep -E =egrep
課後練習:
1、找出/proc/cpuinfo檔案中的1位數或2位數的行;
[ [email protected] ~]# grep '\<[0-9]\{1,2\}\>' /proc/cpuinfo
2、找出/boot/grub/grub.conf命令結果中的1-255之間的整數;
[[email protected] ~]# egrep --colour '\<([1-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\>' /boot/grub/grub.conf
3、查詢當前系統上名字為wolf(必須出現在行首)的使用者的賬號的相關資訊,檔案/etc/passwd;
[[email protected] ~]# grep '^wolf\>' /etc/passwd
4、顯示/boot/grub/grub.conf檔案中以一個或多個空白字元開頭的行;
[ [email protected] ~]# grep -E '^[[:space:]]+' /boot/grub/grub.conf
或者:
[[email protected] ~]# grep '^[[:space:]]\{1,\}' /boot/grub/grub.conf
5、找出ifcongfig輸出結果中IP及掩碼等地址;
[[email protected] ~]# ifconfig | egrep --colour -o '(\<([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\>\.){3}\<([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\>'
6、找出ifconfig輸出結果中A、B、C三類的IP地址;
[[email protected] ~]# ifconfig | egrep --colour -o '\<([1-9]|[1-9][0-9]|1[0-9]{2}|2[0-1][0-9]|22[0-3])\>(\.\<[0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-4]){2}\.\<([1-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-4])\>'
REGEXP:REGular EXPression
1、正則表示式:
Basic REGEXP:基本正則表示式
Extended REGEXP:擴充套件正則表示式
2、擴充套件正則表示式:Extended REGEXP
字元匹配:
.:任意單個字元
[]:範圍內的任意單個字元
[^]:範圍外的任意單個字元
次數匹配:
*:其前字元任意次
?:其前字元0次或1次
+:其前字元至少1次,相當於正則表示式中'\{1,\}'
{m,n}:匹配其前字元至少m次,至多n次
位置錨釘:
^:錨釘行首
$:錨釘行尾
\<:錨釘詞首
\>:錨釘詞尾
分組:
():後向引用
\1:引用第一個左括號以及與之對應的右括號所包含的所有內容
\2:引用第二個左括號以及與之對應的右括號所包含的所有內容
\3:引用第三個左括號以及與之對應的右括號所包含的所有內容
或者:
|:表示或者(or),如a|b,表示匹配a或者b
例1:[
cat
Cat
C
China
例2:[[email protected] ~]# grep -E --colour '(C|c)at' test6.txt
cat
Cat
3、grep -E =egrep
課後練習:
1、找出/proc/cpuinfo檔案中的1位數或2位數的行;
[
2、找出/boot/grub/grub.conf命令結果中的1-255之間的整數;
[[email protected] ~]# egrep --colour '\<([1-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\>' /boot/grub/grub.conf
3、查詢當前系統上名字為wolf(必須出現在行首)的使用者的賬號的相關資訊,檔案/etc/passwd;
[[email protected] ~]# grep '^wolf\>' /etc/passwd
4、顯示/boot/grub/grub.conf檔案中以一個或多個空白字元開頭的行;
[
或者:
[[email protected] ~]# grep '^[[:space:]]\{1,\}' /boot/grub/grub.conf
5、找出ifcongfig輸出結果中IP及掩碼等地址;
[[email protected] ~]# ifconfig | egrep --colour -o '(\<([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\>\.){3}\<([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\>'
6、找出ifconfig輸出結果中A、B、C三類的IP地址;
[[email protected] ~]# ifconfig | egrep --colour -o '\<([1-9]|[1-9][0-9]|1[0-9]{2}|2[0-1][0-9]|22[0-3])\>(\.\<[0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-4]){2}\.\<([1-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-4])\>'