新聞中心

        EEPW首頁 > EDA/PCB > 設計應用 > Linux正則表達式

        Linux正則表達式

        作者: 時間:2024-05-20 來源:網絡 收藏

        一,正則表達式

        1,正則表達式由一堆特殊符號和字母構成----元字符

        本文引用地址:http://www.104case.com/article/202405/458943.htm

        一些具有特殊含義的符號:? . * + ^ $ () {}

        作用
        1)對文本中內容進行過濾
        2)對文件中的內容進行過濾
        正則表達式的種類:
        • 基礎正則表達式

        • 擴展正則表達式

        通常結合三個命令來使用:
        • grep

        • sed

        • awk

        1,grep 命令:
        作用:對文件中的內容進行過濾
        格式: grep 選項 匹配內容 文件
        選項:
        • -v:取反

        • -o:僅僅顯出所匹配的內容

        • -E:使用擴展

        • -i:忽略大小寫

        例:從 a.txt 文件中過濾出包含 root 的行
        grep "root" a.txt
        例:從 a.txt 文件中過濾出不包含 root 的行
        grep -v "root" a.txt

        例:從a.txt文件中過濾出僅僅顯示root的行

        grep -o "root" a.txt

        例:統計a.txt文件中有多少個root

        grep -o "root" a.txt |wc -w
        通配符和正則的區別:
        通配符:針對文件名進行匹配查找的
        正則表達式:針對文件的內容進行匹配查找的
        匹配行首: ^
        匹配行尾:$
        匹配單詞首部:/<
        匹配單詞尾部:/>

        二,正則表達式中元字符:

        1)匹配單個字符

        .  表示任意一個字符(可以空格 逗號 字母 數字 ... )
        例:匹配 a 前面有一個字符的行
        grep ".a" 11.txt

        2)[ ]表示范圍內中的一個

        • [123] 表示匹配1或2或3

        • [0-9]匹配所有的數字

        • [A-Z]匹配所有大寫的字母

        • [a-z]匹配所有小寫的字母

        • [a-Z]匹配所有的字母

        例:匹配文件中包含數字的行
        grep [0-9] file
        例:包含字母 a 的行
        grep "a" file

        3)用字符集的方式表達

        • [[:space:]]:表示一個空格

        • [[:digit:]]:表示任意一個數字

        • [[:lower:]]:表示任意一個小寫字母

        • [[:upper:]]:表示任意一個大寫字母

        • [[ :alpha: ]]:表示任意一個字母

        • [[ :alnum: ]]:表示任意一個字母+數字

        • [[:punct:]]:表示任意一個標點符號

        • [[:digit:][:space:]] 表示一個空格或者任意一個數字

        例:匹配一個包含小寫字母的行
        grep [a-z] filegrep [[:lower:]] file

        4) ^[ ]

        例:匹配以 # 開頭的行
        grep ^[#] file
        [^a] 匹配除了 a 以外的任意字符
        grep [^a] file
        例:過濾沒有包含 qaz 的行
        grep [^qaz] file

        例:過濾出#開頭后面有一個空格的行

        grep "^#[[:space:]]" 11.txt

        5)顯示匹配到的行的前的若干行

        • -An:顯示匹配到的內容的后n行

        • -Bn:顯示匹配到的內容的前n行

        • -Cn:顯示匹配到的內容的前后各n行

        例:匹配包含 root 的行的前 3 行
        grep -B3 "root" file

        6) 次數匹配

        ”*“   前面字符出現了任意次數( 0.1.n ) 例子: a*
        ”.*“   表示任意長度的任意字符
        例: a.*b
        grep "a.*b" 11.txt

        ”?“表示其前面字符出現最多一次


        • a{m,n}b                        b前面的a至少出現m次,最多n次

        • -E a{m,n}b                      b前面的a至少出現m次,最多n次

        • grep -E "a{1,}b" 11.txt     b前面的a至少1次最多不限

        • grep -E "a{1,1}b" 11.txt   b前面的a1次

        • grep -E "a?b" 11.txt         b前面的a1次

        7)位置錨定

        • ^ 表示以n為開頭的行

        • $ 表示以n為結尾的行

        例:以 yum 為結尾的行
        grep "yum$" file
        • <n 表示單詞首部

        • n> 表示單詞尾部

        • ^$ 表示空白行

        8)分組

        •  將一個內容當作一個整體看待

        • 1 引用第一個分組的內容

        • 2 引用第二個分組的內容

        例:在 11.txt 中,過濾出出現過倆個相同數字的行
        grep "([[:digit:]]).*1" 11.txt
        測試
        i love my loverhe love his likershe like her lovershe love her liker
        例:輸出前面一致的行,例如前后都是love或者前后都是like
        grep -E "(l..e).*1" 5.5xt

        擴展正則表達式:

        • 基礎正則:grep [選項] 匹配內容 文件

        • 擴展:

        1. grep -E 匹配內容 文件

        2. egrep 匹配內容 

        文件{1,}:其前面的字符至少出現過1次

         + :其前面的字符至少出現過1次

        9)或:|

        例:過濾出開頭是 a (不區分大小寫)的行
        egrep "^(a|A)" 11.txtegrep "^[aA]" 11.txt
        測試對象
        sadfa cat asfasdf Cat a asdf
        例:匹配cat Cat
        grep -E "(c|C)at" 6.txtgrep -E "(cat|Cat)" 6.txt


        關鍵詞: Linux 代碼 PCB

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 湖州市| 松溪县| 陆河县| 永康市| 阿图什市| 台南市| 日照市| 体育| 双鸭山市| 山丹县| 富川| 福鼎市| 南城县| 长宁县| 开远市| 勐海县| 岳池县| 东莞市| 东至县| 原阳县| 灌云县| 吉林省| 张掖市| 禹州市| 福州市| 湟中县| 嘉黎县| 鱼台县| 海兴县| 古丈县| 广平县| 无棣县| 嘉义县| 建平县| 南宁市| 色达县| 宜川县| 清原| 墨江| 同德县| 隆德县|