shell编程之一(通配与正则表达式)

POSIX标准将正则分为两类
基本正则
扩展正则

基本正则表达式元字符集合及其意义

基本正则表达式元字符集合及其意义

    元字符 意义                  举例
    *   匹配前一个普通字符0次或多次重复        hel*o,可以匹配hello,helllo
    .   匹配任意一个字符,或者空格           ..73.,可以匹配45732,4 732
    ^   匹配行首,或在[]里面匹配后面字符的非-取反  ^clean,匹配以clean开头的行
    $   匹配行尾                nologin$,匹配以nologin结尾的行
    []  匹配字符集合              [0123456789],匹配任意一个数字(穷举)
    \   转义符,屏蔽一个元字符的特殊意义        
    \<\>    精确匹配符号              \<this\>,精确匹配this这个单词,不会匹配thiser等
    \{n\}   匹配前面字符出现n次          hel\{2\}o,精确匹配l两次,匹配hello
    \{n,\}  匹配前面字符至少出现n次            hel\{2,\}o,匹配l至少两次
    \{n,m\} 匹配前面字符出现n~m次            hel\{2,3\}o匹配l次数为2到3次

基本正则的常见用法

    写法      意义
    ^$      匹配空行
    ^.$     匹配只包含一个字符的行 #注意:空格也算是字符
    [0-9]       匹配任意一个数字(范围)
    [^b-d]      匹配任意不在b到d之间的字符

扩展正则表达式元字符集合及其意义

扩展正则表达式元字符集合及其意义

    元字符 意义                  举例
    ?   匹配前面那个字符0次或者一次      jo?b,可以匹配job,joob
    +   匹配前面那个字符1次或多次,与*类似  se+,可以匹配see,seee
    ()  表示一个字符集合或用在expr中        re(a|e|d)d,可以匹配read,reed,redd,等价于re[aed]d
    |   表示或,匹配一组可选的字符       正则1|正则2|正则3|...

通配

bash shell本身不支持正则表达式,但shell支持通配,使用正则的是shell命令和工具如sed,grep,awk,

通配元字符及其意义
    元字符 意义          举例
    *   表示任意字符      rm ./*
    ?   表示一个任意字符        ls /et?
    ^   表示取反        ls /var/log/[a-z]*.[^awk]*匹配任意一个以字母开头,不以awk结尾的日志
    []  字符集         ls /var/log/[a-z]*.log,匹配任意以字符开头的日子文件
    {}  表示一组表达式的集合  ls /var/log/{[a-z]*.[^awk]*,[a-z]*.log},满足其中任意一个,是或的关系

通配的常见用法
    cp ifcfg-eth0{,.bak}    将网卡文件复制以.bak备份一次,相当于:cp ifcfg-eth0 ifcfg-eth0.bak
微信打赏微信打赏

如果文章对你有帮助,欢迎点击上方按钮打赏作者

最后编辑于:2022/11/20作者: 辣条①号

现在在做什么? 接下来打算做什么? 你的目标什么? 期限还有多少? 进度如何? 不负遇见,不谈亏欠!

暂无评论

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注

arrow grin ! ? cool roll eek evil razz mrgreen smile oops lol mad twisted wink idea cry shock neutral sad ???