grep与正则表达式

来源:互联网 发布:ff14人女捏脸数据 编辑:程序博客网 时间:2024/06/16 18:49
grep 及正则表达式
文本查找的需要,
grep, egrep, fgrep
grep:根据模式,去搜索文本,并将符合模式的文本行显示到屏幕 
Pattern: 文本字符和正则表达式的元字符组合而成的匹配条件
grep [OPTIONS] PATTERN [FILE...]
    #grep --color 'root' /etc/passwd
    -i: 忽略字符大小写
    --color[=num]: 
    # alias grep='grep --color'
    -v: 显示没有被模式匹配的行
    -o: 只显示被模式显示的串



正则表达式:Regular Expression,REGEXP
元字符:
    . :匹配单个任意字符 #grep --color 'r..t' /etc/passwd
    [] :匹配指定范围内的任意单个字符
    [^] :匹配指定范围外的任意单个字符

匹配次数(贪婪模式):
    *  :匹配其前面的字符任意次    
        a, b, ab, aab, acb, adb, amnb
        a*b  : b, ab, aab可以匹配

    .* : 任意长度任意字符
        a.*b :a开头,b结束

    \?  : 匹配其前面字符0次或1次(部分匹配)
        #grep 'a\?b' test.txt  nmbmnbmnb符合 

    \{m,n\} :匹配其前面字符至少m次,至多n次
        \{1,\}  :至少1次
        \{1,3\} :至少1次,至多3次
            #grep 'a\{1,3\}b' test.txt
            #grep 'a.\{1,3\}b' test.txt   anmbnmbmnb符合

位置锚定:
    ^ :锚定行首,次字符后面的任意内容必须出现行首
            #grep '^r..t' /etc/passwd

    $ :锚定行尾,次字符后面的任意内容必须出现行尾
            #grep 'w$' /etc/passwd
            #grep 'b..h$' /etc/paawd

    ^$ :空白行        
        #grep '^$' /etc/inittab | wc -l   统计空白行    
        #grep '[[:digit:]]$' /etc/inittab    以一个数字结尾的字符

    \< 或\b :锚定词首,其后面的任意字符必须作为单词首部出现
    \> 或\b :锚定词尾,其前面的任意字符必须作为单词首部出现
        \<root\> 精确匹配单词root

分组:
    \(\)
        \(ab\)*  : ab 可以出现任意次
    \1 :引用第1个左括号以及与之引用的内容
    \2 :引用第2个左括号以及与之引用的
    \3 :引用第3个左括号以及与之引用的
        $ grep '\(l..e\).*\1' test1.txt  //she like anna liker.

0 0