正则表达式详解

正则表达式是一种符号表示法,被用来识别文本中的模式。

  • grep

    grep [options] regex [file…]

    grep选项列表
    这里写图片描述
    例子

    ls /bin > dirlist-bin.txt
    ls /usr/bin > dirlist-usr-bin.txt
    ls /sbin > dirlist-sbin.txt
    ls /usr/sbin > dirlist-usr-sbin.txt
    ls dirlist*.txt
    dirlist-bin.txt     dirlist-sbin.txt    dirlist-usr-sbin.txt
    dirlist-usr-bin.txt
    
    在所有列出的文件中搜索字符串 bzip
    grep bzip dirlist*.txt
    dirlist-bin.txt:bzip2
    dirlist-bin.txt:bzip2recover
    
    -l 选项列出包含匹配模式的文件
    grep -l bzip dirlist*.txt
    dirlist-bin.txt
    
    -L选项列出包含匹配模式的文件
    grep -L bzip dirlist*.txt
    dirlist-sbin.txt
    dirlist-usr-bin.txt
    dirlist-usr-sbin.txt
    
  • 元字符和文本

    原义字符:匹配本身 (例如bzip)
    元字符:^ $ . [ ] { } - ? * + ( ) | \
    所有非元字符都被认为是原义字符

    . 被用来匹配单个任意字符
    ^和$ 被看作锚点,分别表示开头和结尾
    [] 指定的字符集合中匹配一个单个的字符
    []中的第一个字符是^ 表示不匹配字符集合中的字符
    [A-Za-z0-9] [A-Z] [a-z] [0-9] 表示字符区域
    +  匹配1个或多个
    *  匹配0个或多个
    ?  匹配0个或1个
    {} 匹配特定个数的元素 如:{m,n} 表示m至n个
    |  则是或意思.如:ps(a|b),则匹配psa或者psb
    \ 是转义字符
    
  • POSIX 字符集

    先看两个例子(查找以大写字母开头的文件)

    ls /usr/sbin/[ABCDEFGHIJKLMNOPQRSTUVWXYZ]*
    /usr/sbin/MAKEFLOPPIES
    /usr/sbin/NetworkManagerDispatcher
    /usr/sbin/NetworkManager
    
     ls /usr/sbin/[A-Z]*
    /usr/sbin/biosdecode
    /usr/sbin/chat
    /usr/sbin/chgpasswd
    /usr/sbin/chpasswd
    /usr/sbin/chroot
    /usr/sbin/cleanup-info
    /usr/sbin/complain
    /usr/sbin/console-kit-daemon
    

    明显可以看出第二例子有问题,它含有以小写字母开头的文件!
     
    原因在于ASCII中字母的排列规则是

    ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz
    

    而为了满足不在 U.S.英语范围内的字符,扩充了ASCII,使用了添加了字符(128-255)。POSIX 中的 locale ,可以选择所需的字符集,echo $LANG 查看当前字符集一般为en_US.UTF-8。它使用字典排列顺序而不是 ASCII 顺序。

    aAbBcCdDeEfFgGhHiIjJkKlLmMnNoOpPqQrRsStTuUvVwWxXyYzZ
    

    export LANG=POSIX可以使系统为它的字符集使用 U.S.英语,即ASCII

    POSIX 字符集
    这里写图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值