語(yǔ)法格式
egrep [OPTIONS] PATTERN [FILE...]
egrep [OPTIONS] [-e PATTERN | -f FILE] [FILE...]
說(shuō)明: egrep 和 grep 的語(yǔ)法一致蜕衡,區(qū)別在于元字符的使用上: 擴(kuò)展的正則表達(dá)式與基本正則表達(dá)式一致丹禀,但是不用轉(zhuǎn)義舒萎。
基本正則表達(dá)式元字符:
字符匹配:., .*, [], [^]
次數(shù)匹配:(通過(guò)分組的方式對(duì)不止一個(gè)字符做次數(shù)匹配) *, \?, \+, \{m,n\}
位置錨定:^, $, \< (\b), \> (\b)
分組及引用:\(\), \n
擴(kuò)展的正則表達(dá)式元字符
字符匹配:., .*, [], [^]
次數(shù)匹配:(通過(guò)分組的方式對(duì)不止一個(gè)字符做次數(shù)匹配)
* 任意次數(shù)
? 0或者1次
+ 1或者多次
{m,n} 精確匹配抽兆,至少m次莲祸,至多n次
位置錨定:
^ 錨定行首
$ 錨定行尾
\< (\b) 錨定詞首
\> (\b) 錨定詞尾
分組及引用:
() 分組
\n 后向引用
或者:
a|bc a或者bc
C|cat C或者cat
(c|C)at Cat或者cat
擴(kuò)展的正則表達(dá)式示例:
1、顯示當(dāng)前系統(tǒng)上root蝴悉、fedora或user1用戶(hù)的默認(rèn)shell 和 uid彰阴;
# grep -E "^(root|fedora|user1):" /etc/passwd | cut -d: -f7
# egrep "^(root|fedora|user1)\>" /etc/passwd | cut -d: -f3,7
2、找出/etc/rc.d/init.d/functions文件中某單詞后跟一組小括號(hào)“()”行拍冠;
# grep -o -E "\<[[:alpha:]]+\>\(\)" /etc/rc.d/init.d/functions
# egrep -o "\<[[:alpha:]]+\>\(\)" /etc/rc.d/init.d/functions
3尿这、使用echo命令輸出一個(gè)路徑,而后使用grep取出其基名庆杜;
# echo "/etc/sysconfig/" | grep -o -E "[^/]+/?$" | cut -d/ -f1
# echo "/etc/sysconfig/" | egrep -o "[^/]+/?$" | cut -d/ -f1
4妻味、找出ifconfig命令結(jié)果中的1-255之間的數(shù)字;
# ifconfig | egrep -o "\<([1-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\>"
5欣福、挑戰(zhàn)題:寫(xiě)一個(gè)模式,能匹配合理的ipv4地址焦履;
# 分析: 1.0.0.1-239.255.255.255
# ifconfig | egrep -o "\<([1-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\>\.\<([1-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\>\.\<([1-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\>\.\<([1-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\>"