shell 正则表达式学习笔记

本文详细介绍Shell中正则表达式的使用方法,包括基础与扩展正则表达式的各种元素及用法,如定位符、字符匹配符、限定符等,并通过实例演示如何进行文件名筛选。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

shell 正则表达式学习笔记


基础正则表达式

  1. 行首定位符 ^

    str=`ls /etc | grep ^po`
    echo "$str"

    打印出/etc目录下所有以po开头的文件名
  2. 行尾定位符”$”

    str=`ls /etc | grep conf$`
    echo "$str"

    打印出/ect目录下所有以conf结尾的文件名。

  3. 利用行首定位符和行位定位符来精确定位一个文件

    ^cat$ %将所需要精确匹配的文件名放置在行首定位符和行尾定位符之间就可以了
  4. 单个字符匹配符”.”
    圆点可以用来匹配任意单个字符,包括空格,但是不包括换行符”\n”

    str=`ls /etc | grep "samba."`
    echo "$str"
  5. 限定符”*”

    str=`ls /etc | grep "^sss*"`
    echo "$str"

    \^sss* 表示以字符ss开头,接着是0个或者多个字符s

  6. 字符集匹配’[]’
    [abc]表示只要某个字符串在方括号所在位置出现了方括号内的任意一个字符,都满足匹配规则

    str=`ls /etc | grep "^rc[0-9]"`
    echo "$str"

    满足rc开头数字结尾的文件名

  7. 字符集不匹配[^]
    [^]表示不匹配其中列出的任意字符

扩展正则表达式

  1. 限定符”+”
    +表示前面的字符至少出现一次。

    str=`ls /etc | egrep "^sss+"`
    echo "$str"

    筛选以字符串”ss”开头,后面至少紧跟一个字符’s’

  2. 限定符’?’

    表示限定前面的字符最多只出现一次。即前面的字符可以重复0次或者1次

    str=`ls /etc | egrep "^sss?"`
    echo "$str"

    筛选以字符串ss开头,后面跟着0个或者1个s的文件

  3. 竖线’|’ 和圆括号()
    竖线表示多个正则表达式之间’或’的关系
    ()表示一组可选值的集合
    shell
    str=`ls /etc | egrep "(ssh|ssl|^yum)"`
    echo "$str"

    筛选含有字符串ssh ssl或者以yum开头的文本行

Perl正则表达式

  1. 数字匹配’\d’
    \d匹配0~9中的任意一个数字,等价于[0-9]
  2. 非数字匹配’\D’
    \D匹配一个非数字字符,等价于[^0-9]
  3. 空白字符匹配’\s’
    ‘\s’匹配所有空白字符,包括空格、制表符、以及换页符。等价于[\f\n\r\t\v]
  4. 非空白符匹配’\S’
    ‘\S’匹配任何非空字符,等价于表达式[^\f\n\r\t\v]

常用字符集表达形式

    [Cc]hina %表示匹配chinaChina两个字符串
    [^hello] %表示不匹配hello这个字符串
    [a-zA-Z] %表示匹配所有大小写字母
    [0123456789] %表示匹配所有的个位数字
    [0-9] %同第四个

POSIX字符集

字符类说明
[:alnum:]匹配任意一个字母或者数字,等价于A-Za-z
[:digit:]匹配任意一个数字,等价于0-9
[:alpha:]匹配任意一个字母,等价于a-zA-Z
[:lower:]匹配一个小写字母,等价于a-z
[:upper:]匹配一个大写字母,等价于A-Z
[:space:]匹配一个空白字符,包括空格、制表符、换行符、分页符等
[:blank:]匹配空格和制表符
[:graph:]匹配任意一个看得见的可打印字符,不包括空白字符
[:print:]匹配一个可打印字符,包括空白字符,但是不包括控制字符、’\0’、EOF文件结束符
[:cntrl:]匹配任意一个控制字符。
[:punct:]匹配任意一个标点符号。
[:xdigit:]匹配16进制数 即0-9,a-f,A-F

使用方法[[:alnum:]]等价于[a-zA-Z0-9]


结束

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值