shell编程-正则表达式

正则表达式

1. 基础正则表达式

看下表:

元字符作用
*表示匹配*前面的字符0次或者任意多次
.表示匹配除了换行符之外的任意一个字符
^定位行首,比如^fiona表示匹配以fiona开始的行
$定位行尾,比如fiona$表示匹配以fiona结尾的行
[]表是匹配中括号里面的任意一个字符
[^]表示中括号里面的内容取反,也就是不包含中括号里面内容的字符
\转义符
\{n\}匹配前面的内容刚好n次,不要看着这个表达式复杂,\是转义符
\{n,\}匹配前面的内容大于等于n次,与上面一样,\是转义符
\{n,m\}匹配前面的内容最少n次,最多m次
+匹配前一个字符1次或多次,这是扩展正则,需要用egrep或者grep -E
?匹配前一个字符0次或1次,这是扩展正则,需要用egrep或者grep -E
|匹配两个或者多个分支选择,"a
()括号内的内容看成一个整体,(abd)+,会匹配abd,abdabd,abdabdabd

通过例子说明:
下面有一段文本:

服务器磁盘空间使用情况:
Filesystem                   Size  Used Avail Use% Mounted on
devtmpfs                      32G     0   32G   0% /dev
tmpfs                         32G  3.0M   32G   1% /dev/shm
tmpfs                         32G  325M   32G   2% /run
tmpfs                         32G     0   32G   0% /sys/fs/cgroup
/dev/mapper/rhel-root         84G   14G   70G  17% /
/dev/sda1                    497M  176M  322M  36% /boot
/dev/mapper/vgdata01-lvdata  400G   32G  369G   8% /data
tmpfs                        6.3G   12K  6.3G   1% /run/user/42
tmpfs                        6.3G     0  6.3G   0% /run/user/1000

CPU使用情况:

avg-cpu:  %user   %nice %system %iowait  %steal   %idle
           0.26    0.00    0.12    0.00    0.00   99.62

内存使用情况:
              total        used        free      shared  buff/cache   available
Mem:            62G         16G         26G        310M         19G         45G
Swap:           15G         24M         15G

  • t*:这个表达式没有任何意义,这样会把所有内容匹配出来
  • tt*:匹配包含t的行,无论多少个t都行
    在这里插入图片描述
  • t.p:表示匹配t和p中间有任意一个字符的行
    在这里插入图片描述
  • ^/:表示匹配以/开始的行:
    在这里插入图片描述
  • ^[a-zA-Z].*[0-9]$:表示匹配以字母开头,数字结尾的行
    在这里插入图片描述
  • ^$:表示匹配空白行,利用grep -v 我们可以去掉空白行
    在这里插入图片描述
    在这里插入图片描述
  • 我们来写个匹配手机号的正则
    1[3-8][0-9]\{9\}
  • 我们再来写个匹配IP地址的正则,这个就很麻烦了。
    “^(([0-9].)|([0-9][0-9].)|(1[0-9][0-9].)|(2[0-4][0-9].)|(25[0-5].)){3}(([0-9])|([0-9][0-9])|(1[0-9][0-9])|(2[0-4][0-9])|(25[0-5]))$”
"^(([0-9]\.)|([0-9][0-9]\.)|(1[0-9][0-9]\.)|(2[0-4][0-9]\.)|(25[0-5]\.)){3}(([0-9])|([0-9][0-9])|(1[0-9][0-9])|(2[0-4][0-9])|(25[0-5]))$"

无意义的工作,自己体会下

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值