当前位置:

Shell脚本:正则表达式花每年都开,你还是那个你吗

访客 2024-01-05 1489 0

一、什么叫做正则表达式

在计算机科学中,是指一个用来描述或者匹配一系列符合某个句法规则的字符串的单个字符串。在很多文本编辑器或其他工具里,正则表达式通常被用来检索或替换那些符合某个模式的文本内容。许多程序设计语言都支持利用正则表达式进行字符串操作。
只有掌握了正则表达式,才能全面地掌握Linux下的常用文本工具(例如:grep、egrep、sed、awk等)的用法。

二、正则表达式的组成

  • 正则表达式由普通字符与元字符组成

  • 普通字符包括大小写字母、数字、标点符号及一些其他符号
    元字符是指在正则表达式中具有特殊意义的专用字符,可以用来规定其前导字符(即位于元字符前面的字符或表达式,可以使用()括起来指定)在目标对象中的出现模式。

三、正则表达式分类

1.基本的正则表达式(BasicRegularExpression又叫BasicRegEx简称BREs)
2.扩展的正则表达式(ExtendedRegularExpression又叫ExtendedRegEx简称EREs)
3.Perl的正则表达式(PerlRegularExpression又叫PerlRegEx简称PREs)

四、正则表达式字符用法

1.基础正则表达式常见元字符(支持grep、egrep、sed、awk)

注意:
正则表达式在表示时,需要加单引号’'或双引号""。
grep和sed在使用大括号{}表示正则表达式时,需要加转义字符\表示大括号{}。

  • 扩展正则表达式元字符(支持:egrep、grep-E、awk、sed-r)
  • 五、正则表达式练习

    1.匹配/etc/fstab中不是以#开头的行

    //^代表以...开头,[^#]代表匹配非#[root@localhost1~]#grep"^[^#]"/etc/fstab/dev/mapper/centos-root/xfsdefaults00UUID=552d20a1-63f1-4209-af23-7bcdb31d1c84/bootxfsdefaults00/dev/mapper/centos-swapswapswapdefaults00

    2.匹配/etc/passwd中以bash结尾的行

    [root@localhost1~]#grep"bash$"/etc/passwdroot:x:0:0:root:/root:/bin/bashzhangsan:x:1001:1001::/home/zhangsan:/bin/bashlisi:x:1002:1002::/home/lisi:/bin/bashzhaoliu:x:1003:1003::/home/zhaoliu:/bin/bashwangwu:x:1004:1004::/home/wangwu:/bin/bash

    3.匹配文件中025开头,后一个字符为"-“、”"或没有,之后为5或8开头的数字,总位数为11位

    [root@localhost1~]#catnumber.txt0258318850002583242add032-asdw223s025-83223032023asdwe342d025-58347282025-53556635342023-8234235302588888888//025开头——>^025//后一个字符为"-"、""或没有(即匹配"-"或""0次或一次)——>[-]?//因为使用了?,需要给grep加-E选项//之后为5或8——>[58]//总位数为11位数字,前面已经有4个,之后匹配7个任意数字——>[0-9]{7}$[root@localhost1~]#grep-E"^025[-]?[58][0-9]{7}$"number.txt02583188500025-5834728202588888888

    发表评论

    • 评论列表
    还没有人评论,快来抢沙发吧~