Chinaunix首页 | 论坛 | 博客
  • 博客访问: 134903
  • 博文数量: 28
  • 博客积分: 527
  • 博客等级: 中士
  • 技术积分: 367
  • 用 户 组: 普通用户
  • 注册时间: 2011-02-09 17:05
个人简介

运维开发工程师。致力于网络,WEB应用服务,Linux系统运维。方向:操作系统,监控,自动化

文章分类

全部博文(28)

文章存档

2013年(12)

2012年(16)

分类: LINUX

2013-06-16 13:28:10

Intro
    BRE    basic regulat expression, used by 'grep', 'sed', 'vi'
    ERE    extended regular expression, used by 'egrep, awk'
    PRE    perl regx

About Grep
        grep           默认BRE
        grep -E        开启ERE
        grep -F        固定字串匹配

Examples of BRE
    建议打开 alias grep='grep --color=auto',显示匹配的部分

    匹配任意字符            
        regex='.*'
    '.'符号匹配换行符
        $echo -ne '\n' | grep -qs '.' ; echo $?    #返回1
    '$'匹配换行符
        $echo -ne '\n' | grep -qs '$' ; echo $?    #返回0      
    锚位:空行
        regex='^$'
    匹配英文字符
        $grep '[a-zA-Z]' textfile
    不匹配英文字母
        $grep '[^a-zA-Z]' textfile
    匹配元字符
        $grep '[].\*[()-]' textfile            #注意'-'的顺序
    叠词xx:反向引用
        $grep '\(.\)\1' text.txt
    叠词xyyx:反向引用
        $grep '\(.\)\(.\)\2\1' 
text.txt
    匹配被引号圈引的字符
        $grep "\(['\"]\).*\1" text.txt    #注意\"要转义
    重复
        $echo {{{ | grep '{\{3\}' --color=auto    #{}是元字符
    分组后重复
        $echo comcomcom | grep '\(com\)\{3\}'
    或
        $echo computer and server | grep -e 'computer' -e 'server'
        等价于
        $echo computer and server | grep -E 'computer|server'
    匹配单词字符
        regex = '\w' ='[a-zA-Z0-9_]'
        $echo *xs8 | grep '\w\{3\}'
    匹配单词结尾或开头(\b和\<的区别暂时不详)
        $echo microword |grep 'word\>'              #匹配
        $echo microwords |grep 'word\>'             #不匹配
    匹配诸如China, America, Shanghai等大写开头的字串
        $grep '\<[A-Z]\w*\>' text.txt

BRE和ERE转换
    ERE: a? == BRE: a\{0,1\}
    ERE: a+ == BRE: a\{1,\}
    ERE: a{m,n} == BRE: a\{m,\n}
    ERE: (a) == BRE: \(a\)
    ERE: grep -E 'REGEX1|REGEX2'== BRE: grep -e REGEX1 -e REGEX2
阅读(2057) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~