linux中的正则

普通正则

  1. ^word 搜索以word 开头的
    [root@oldboylinux ~/test]#alias grep='grep --color'
    [root@oldboylinux ~/test]#grep  qq oldboy.txt 
    My qq is 4920085
    [root@oldboylinux ~/test]#cat oldboy.txt 
    I am a linux sa.
    My blog is www.blog.com
    My qq is 4920085
    [root@oldboylinux ~/test]#grep ^[Mm] oldboy.txt 
    My blog is www.blog.com
    My qq is 4920085
    my name is seven
    [root@oldboylinux ~/test]#grep ^M oldboy.txt 
    My blog is www.blog.com
    My qq is 4920085
    [root@oldboylinux ~/test]#
    

     

  2. word$ 搜索以word结尾的
    [root@oldboylinux ~/test]#grep com$ oldboy.txt 
    My blog is www.blog.com
    [root@oldboylinux ~/test]#

     

  3. . 代表且只能代表任意的一个字符
    [root@oldboylinux ~/test]#grep . oldboy.txt 
    I am a linux sa.
    My blog is www.blog.com
    My qq is 4920085
    my name is seven

     

  4. \ 例如\.转义符号,让有着特殊身份意义的符号,脱掉马甲,还原原型
    [root@oldboylinux ~/test]#grep \" oldboy.txt 
    my phone is "123456"

     

  5. * 例如 o* 重复0个或多个字符
    [root@oldboylinux ~/test]#grep 0* oldboy.txt 
    I am a linux sa.
    My blog is www.blog.com
    My qq is 4920085
    My qq is 492000000000085
    My qq is 492085
    my name is seven
    my phone is "123456"
    [root@oldboylinux ~/test]#grep ^My* oldboy.txt 
    My blog is www.blog.com
    My qq is 4920085
    My qq is 492000000000085
    My qq is 492085

     

  6. .*匹配所有的字符 ^.*以任意多个字符开头的
  7. [] 字符集合的重复特殊字符的符号
  8. [^word]匹配不包含^后面的任意字符内容
    [root@oldboylinux ~/test]#grep [a-z] oldboy.txt 
    I am a linux sa.
    My blog is www.blog.com
    My qq is 4920085
    My qq is 492000000000085
    My qq is 492085
    my name is seven
    my phone is "123456"

     

  9. a\{n,m\}重复n到m次,前一个重复字符
  • a\{n,\}重复n次以上,前一个重复字符
  • a\{n,\重复n次,前一个重复字符
    [root@oldboylinux ~/test]#grep 0\{2} oldboy.txt 
    [root@oldboylinux ~/test]#grep 0\{2\} oldboy.txt 
    [root@oldboylinux ~/test]#egrep 0{2} oldboy.txt 
    My qq is 4920085
    [root@oldboylinux ~/test]#alias egrep='egrep --color'
    [root@oldboylinux ~/test]#egrep 0{2} oldboy.txt 
    My qq is 4920085
    [root@oldboylinux ~/test]#egrep 0\{,10\} oldboy.txt 
    I am a linux sa.
    My blog is www.blog.com
    My qq is 4920085
    My qq is 492000000000085
    My qq is 492085
    my name is seven
    my phone is "123456"
    [root@oldboylinux ~/test]#egrep 0\{5,10\} oldboy.txt 
    My qq is 492000000000085
    [root@oldboylinux ~/test]#
    [root@oldboylinux ~/test]#egrep 0\{2\} oldboy.txt (不能精确的过滤2个0)
    My qq is 4920085
    My qq is 492000000000085

     

扩展正则

[root@oldboylinux ~/test]#grep -E "\<My\>.+\<qq\>" oldboy.txt 
My qq is 4920085
My qq is 492000000000085
My qq is 492085

3. 用于egrep和 grep -E的元字符扩展集

+       :匹配一个或多个先前的字符。如:'[a-z]+able',匹配一个或多个小写字母后跟able的串,如loveable,enable,disable等。

?       :匹配零个或多个先前的字符。如:'gr?p'匹配gr后跟一个或没有字符,然后是p的行。

a|b|c    :匹配a或b或c。如:grep|sed匹配grep或sed

()       :分组符号,如:love(able|rs)ov+匹配loveable或lovers,匹配一个或多个ov。

x{m},x{m,},x{m,n} :作用同x\{m\},x\{m,\},x\{m,n\}

5. Grep命令选项

   -a或--text   不要忽略二进制的数据。

   -A   <显示列数>或--after-context=<显示列数>    除了显示符合范本样式的那一列之外,并显示该列之后的内容。

   -b或--byte-offset    在显示符合范本样式的那一列之前,标示出该列第一个字符的位编号。

   -B<显示列数>或--before-context=<显示列数>    除了显示符合范本样式的那一列之外,并显示该列之前的内容。

   -c或--count   计算符合范本样式的列数。

   -C<显示列数>或--context=<显示列数>或-<显示列数>    除了显示符合范本样式的那一列之外,并显示该列之前后的内容。

   -d<进行动作>或--directories=<进行动作>    当指定要查找的是目录而非文件时,必须使用这项参数,否则grep指令将回报信息并停止动作。

   -e<范本样式>或--regexp=<范本样式>    指定字符串做为查找文件内容的范本样式。

   -E或--extended-regexp    将范本样式为延伸的普通表示法来使用。

   -f<范本文件>或--file=<范本文件>    指定范本文件,其内容含有一个或多个范本样式,让grep查找符合范本条件的文件内容,格式为每列一个范本样式。

   -F或--fixed-regexp    将范本样式视为固定字符串的列表。

   -G或--basic-regexp    将范本样式视为普通的表示法来使用。

   -h或--no-filename    在显示符合范本样式的那一列之前,不标示该列所属的文件名称。

   -H或--with-filename    在显示符合范本样式的那一列之前,表示该列所属的文件名称。

   -i或--ignore-case    忽略字符大小写的差别。

   -l或--file-with-matches    列出文件内容符合指定的范本样式的文件名称。

   -L或--files-without-match    列出文件内容不符合指定的范本样式的文件名称。

   -n或--line-number    在显示符合范本样式的那一列之前,标示出该列的列数编号。

   -q或--quiet或--silent    不显示任何信息。

   -r或--recursive   此参数的效果和指定“-d recurse”参数相同。

   -s或--no-messages    不显示错误信息。

   -v或--revert-match    反转查找。

   -V或--version   显示版本信息。

   -w或--word-regexp    只显示全字符合的列。

   -x或--line-regexp    只显示全列符合的列。

   -y    此参数的效果和指定“-i”参数相同。

   --help    在线帮助。

[root@oldboylinux ~/test]#egrep "32768|32767" /etc/services 
filenet-powsrm  32767/tcp               # FileNet BPM WS-ReliableMessaging Client
filenet-powsrm  32767/udp               # FileNet BPM WS-ReliableMessaging Client
filenet-tms     32768/tcp               # Filenet TMS
filenet-tms     32768/udp               # Filenet TMS
[root@oldboylinux ~/test]#

参考资料

https://blog.csdn.net/youmatterhsp/article/details/80528761

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值