文本編輯工具 -- egrep語法及其使用

語法格式

egrep [OPTIONS] PATTERN [FILE...]
egrep [OPTIONS] [-e PATTERN | -f FILE] [FILE...]

說明: egrep 和 grep 的語法一致,區別在于元字符的使用上: 擴展的正則表達式與基本正則表達式一致,但是不用轉義。

基本正則表達式元字符:

    字符匹配:., .*, [], [^]
    次數匹配:(通過分組的方式對不止一個字符做次數匹配)  *, \?, \+, \{m,n\}
    位置錨定:^, $, \< (\b), \> (\b)
    分組及引用:\(\), \n

擴展的正則表達式元字符

    字符匹配:., .*, [], [^]
    次數匹配:(通過分組的方式對不止一個字符做次數匹配)     
        * 任意次數   
        ? 0或者1次
        + 1或者多次  
        {m,n}  精確匹配,至少m次,至多n次
    位置錨定:  
        ^  錨定行首
        $  錨定行尾
        \< (\b)  錨定詞首
        \> (\b)  錨定詞尾
    分組及引用:
        () 分組
        \n 后向引用
    或者:
        a|bc a或者bc
        C|cat C或者cat
        (c|C)at Cat或者cat 

擴展的正則表達式示例:

        1、顯示當前系統上root、fedora或user1用戶的默認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文件中某單詞后跟一組小括號“()”行;
        # grep -o -E "\<[[:alpha:]]+\>\(\)" /etc/rc.d/init.d/functions
        # egrep -o "\<[[:alpha:]]+\>\(\)" /etc/rc.d/init.d/functions

        3、使用echo命令輸出一個路徑,而后使用grep取出其基名;
        # echo "/etc/sysconfig/" | grep -o -E "[^/]+/?$" | cut -d/ -f1
        # echo "/etc/sysconfig/" | egrep  -o  "[^/]+/?$" | cut -d/ -f1
        
        4、找出ifconfig命令結果中的1-255之間的數字;
        # ifconfig | egrep -o  "\<([1-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\>"

        5、挑戰題:寫一個模式,能匹配合理的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])\>"
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容