grep正则表达式

文本查找需要
grep:global research:根据模式,搜索文本,并将符合模式的文本行显示出来。
pattern:文本字符和正则表达式的元字符组合而成的匹配条件
man grep:查看帮助
查找/etc/passwd文件包含root的内容;
    [root@iZ233y80y23Z ~]# grep 'root' /etc/passwd
    root:x:0:0:root:/root:/bin/bash
    operator:x:11:0:operator:/root:/sbin/nologin    
grep [option] [pattern] file
    --color:高亮颜色;alias grep="grep --color"
    -i:忽略大小写;
    -v:显示没有被模式匹配的行。
    -o:只显示被模式匹配到的串本身。每个串显示为一行。
正则表达式
regular expression,REGEXP;
正常默认情况,grep 工作在贪婪模式,尽可能多的匹配。
.*:任意字符。
元字符:
    .:匹配任意单个字符
    []:匹配指定范围内的任意单个字符。
    [^]:匹配指定范围外的任意单个字符。
        [:digit:]:数字匹配;[:lower:]:小写字母;[:upper:]大写字母;[:punct:]:符号
        [:space:]:所有空格;[:alpha:]:所有字母;[:alnum:]所有数字字母;
        eg:
        [root@iZ233y80y23Z ~]# grep '[[:digit:]]$' /etc/inittab 
        # multi-user.target: analogous to runlevel 3
        # graphical.target: analogous to runlevel 5 



匹配次数:
    *:匹配其前面的字符任意次;a*b:a出现任意次后面加上b;跟文件通配不同;注意;
    \?:匹配其前面字符1次或者0次;需要转义字符\;grep 'a\?b' grep.txt
    \+:匹配其前面字符出现至少一次。需要转义字符\;grep 'a\+b' grep.txt
    \{m,n\}:匹配其前面字符出现该范围区间的。grep 'a\{1, 3\}b' grep.txt


位置锚定:
    ^:锚定行首,此字符后面的任意内容必须出现在行首。grep '^r..t' /etc/passwd
    $:锚定行尾,此字符前面的任意内容必须出现在行尾。grep 'bash$' /etc/passwd
    ^$:空白行。# grep '^$' /etc/bashrc | wc -l
    \<或者\b:其后面的任意字符必须作为单词首部出现。
    \>或者\b:其前面的任意字符必须作为单词尾部出现。
        \<root\>:root必须作为单词的首部或者尾部;
        eg:
            [root@iZ233y80y23Z test]# cat word.txt 
            this is root.
            the user is mroot
            rooter is a dog,s name
            chroot is command
            mrooter is dog
            root is my dd
            [root@iZ233y80y23Z test]# grep '\<root\>' word.txt 
            this is root.
            root is my dd   
    eg:
        [root@iZ233y80y23Z test]# cat grep.txt 
        a
        b
        ab
        aab
        acb
        adb
        amnb
    grep 'a\?b' grep.txt

分组:\(\):在后面能引用到
    \(ab\)*:ab这个分组可以出现零次一次或者N次;grep '\(ab\)*' grep.txt
    后向引用:
    \1:第一个左括号以及与之对应的右括号所包含的所有内容。# grep '\(l..e\).*\1' lover.txt 
    \2:第二个括号。
    eg:
        [root@iZ233y80y23Z test]# cat lover.txt 
        he love his lover
        she like her lover
        he like his liker
        she love his lover
egrep及扩展正则表达式
正则表达式;Basic REGEXP;扩展正则表达式:Extended REGEXP;扩展。大多数支持基本正则表达式。
grep:使用基本正则表达式定义的模式来过滤文本的命令。
    -i:忽略大小写;-v:表示显示没有匹配行。--color;
    -E:使用扩展正则表达式。
    -A #n:当某一行被grep匹配到的时候,下面的n行同时显示。
    #grep -A 2 '^core id' /proc/cpuinfo
    -B #n:当某一个行被grep匹配到的时候,上面n行同时显示
    -C #n:当某一行被grep匹配到的时候,上下n行同时显示。

扩展的正则表达式:-E扩展;grep -E = egrep
    字符匹配:.,[],[^]
    次数匹配:*,?:不需要加反斜线。+:匹配其前面字符至少一次。{m,n}
    锚定字符相同:^,$,\<,\>
    分组:
        ():不需要加反斜线,真正分组的意义;
         \1,\2,\3
        或者:
        a|b:or或者的意思。C|cat:C或者cat,匹配的是整个左边或者右边;(C|c)at:Cat或者cat;
        eg:
            grep --color -E '^[[:space:]]+' /boot/grub/grub.conf:至少一个空白字符开头。

    查找1-255之间的数字;必须是单个单词出现的。
    egrep --color '\<([1-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\>' 
    ifconfig | egrep --color '(\<([1-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\>\.){3}\<([1-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\>'

    IPV4地址:
    '\<([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-9])\>){2}\.\<([1-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-4])\>'

    ifconfig | egrep --color '\<([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-9])\>){2}\.\<([1-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-4])\>'
fgrep:fast grep快速匹配。
不支持正则表达式。速度比较快。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值