Linux面试指令---正则表达式

正则表达式与 grep 命令

       正则表达式是一种符号表示法,被用来识别文本模式。在某种程度上,它们与匹配文件和路径名的 shell 通配符比较相似,但其规模更大。许多命令行工具和大多数的编程语言都支持正则表达式,以此来帮助解决文本操作问题。

正则表达式元字符由以下字符组成:

^ $ . [ ] { } - ? * + ( ) | \
正则表达式描述示例
^行起始标记^shiyan匹配以shiyan起始的行
$行尾标记$shiyan匹配以shiyan结尾的行
.匹配任意一个字符(除了换行符)a.c匹配abc,aac,但不匹配abbc
[ ]匹配包含在[字符]之中的任意一个字符ab[cd]匹配abc或abd
[ ^ ]匹配除[^字符]之外的任意一个字符1[^01]匹配12、13,但不匹配10,11
[ - ]匹配[ ]指定范围内的任意一个字符[1-5]匹配1-5的任意一个数字
{n}匹配之前的项n次[0-9]{2}匹配任意一个两位数,相当于[0-9][0-9]
{n,}之前的项至少需要匹配n次[0-9]{2,}匹配任意一个两位或更多为的数字
{n,m}指定以前的项需要匹配的最小和最大次数[0-9]{2,5}匹配从两位数到五位数之间的任意一个数字
匹配之前的项1次或者0次shiy?an匹配shiyan或shian
*匹配之前的项0次或者多次shiy*an匹配shian、shiyan、shiyyan
+匹配之前的项1次或者多次shiy+an匹配shiyan、shiyyan
()创建一个用于匹配的子串ma(in)?匹配ma或main
|匹配 | 两边的任意一项Dec (1st | 2nd) 匹配 Dec 1st 或者 Dec 2nd
\将上面的特殊字符进行转义a\+b 匹配 a+b

(1)常用范例

         例一:利用 Linux 系统自带的字典查找一个五个字母的单词,第三个字母为 j,最后一个字母为 r ,/usr/share/dict 目录下存放字典文件,可以使用如下命令:

  

grep '^..j.r$' linux.words

        例二:验证固定电话,打印符合条件的电话,固定电话格式基本都是带有 0 的区号+连接符“-”+电话号码,另外还有可能有分机号,区号有 3 位、4 位,电话号码有 7 位和 8 位的,可以使用如下命令:

grep "^0[0-9]{2,3}-[0-9]{7,8}(-[0-9]{3,4})?$" telphone.txt

区号:前面一个 0,后面跟 2-3 位数字 : 0[0-9]{2,3}

电话号码:7-8 位数字: [0-9]{7,8}

分机号:一般都是 3-4 位数字: [0-9]{3,4} 

       注意执行下面的命令时没有任何匹配输出,这是因为没有加-E 选项,那例一没加为什么可以呢,这是因为 grep 把.当成 shell 通配符,不是正则表达式的元字符。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

头脑灵活的胖子

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值