用egrep的-P参数来匹配日期

我们知道,sed, grep,awk都支持正则表达式,但支持力度显然没有Perl这样语言强。 有的时候如果对字符串来匹配其中的日期,可能会找不到,这个时候使用-P参数可能会收到很好的效果。

比如:10101010222222_a_b_20190108102030_1234.zip这样的文件,前面数字有14位,其中日期也是14位,如果使用\d{14}会匹配出两个,而且grep还不支持\d格式要写成[0-9]格式。 这个时候使用-P参数可以达到目的

[root@host ~] # s="10101010222222_a_b_20190108102030_1234.zip"
[root@host ~] # echo $s | grep -oP '(20|19)\d{2}[01]\d{9}'
20190108102030

备注:

  • -o                                # 刚好显示匹配到的内容
  • -P                               # 以支持Perl的正则匹配内容来显示内容,但有时候版本不同,可能会报错
  • (20|19)\d{2}[01]\d{9}   # 可以比较精确日期,过滤掉前面一个14位的数字

如果不用-P参数的,替代方案可以是:

[root@host ~] # s="10101010222222_a_b_20190108102030_1234.zip"
[root@host ~] # echo $s | egrep -o '(20|19)[0-9]{2}[01][0-9]{9}'
20190108102030

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值