博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
匹配特定数字串
阅读量:6835 次
发布时间:2019-06-26

本文共 1293 字,大约阅读时间需要 4 分钟。

定义一个file.txt文件,包含内容如下

$ cat file.txt 987-123-4567123 456 7890(123) 456-7890222122-213-32121231-456 7894321 984-4984(218)-393-3399(001) 345-0000

要求打印出格式如 (xxx) xxx-xxxx or xxx-xxx-xxxx. (x means a digit)的行

grep -E "[[:digit:]][[:digit:]][[:digit:]]-[[:digit:]][[:digit:]][[:digit:]]-[[:digit:]][[:digit:]][[:digit:]][[:digit:]]|([[:digit:]][[:digit:]][[:digit:]]) [[:digit:]][[:digit:]][[:digit:]]-[[:digit:]][[:digit:]][[:digit:]][[:digit:]]" file.txt

得到:

987-123-4567

321 984-4984

这样搜不到

(001) 345-0000

grep -E "\([[:digit:]][[:digit:]][[:digit:]]\) [[:digit:]][[:digit:]][[:digit:]]-[[:digit:]][[:digit:]][[:digit:]][[:digit:]]|[[:digit:]][[:digit:]][[:digit:]]-[[:digit:]][[:digit:]][[:digit:]]-[[:digit:]][[:digit:]][[:digit:]][[:digit:]]" file.txt

得到

987-123-4567

(123) 456-7890

(001) 345-0000

把括号转义一下,括号两边都需要转义;可以满足条件

这种做法看起来太笨了,有多少个数字就得重复多少次[[:digit:]]

这是局部条件符合就会匹配,比如111(001) 345-0000也能匹配进来;并不是完全匹配的

 

换一种做法,用正则来匹配数字

cat file.txt | grep -Eo '^(\([0-9]{3}\) ){1}[0-9]{3}-[0-9]{4}$|^([0-9]{3}-){2}[0-9]{4}$'

这里有两个匹配条件

^(\([0-9]{3}\) ){1}[0-9]{3}-[0-9]{4}$ 匹配形如(123) 456-7890的电话号码

^([0-9]{3}-){2}[0-9]{4}$ 匹配形如987-123-4567的电话号码

用sed来找

#using sedsed -n -E '/^([0-9]{3}-|\([0-9]{3}\) )[0-9]{3}-[0-9]{4}$/p' file.txt#using grep in Perl modegrep -P '^(\d{3}-|\(\d{3}\) )\d{3}-\d{4}$' file.txt

  

 

转载地址:http://ttxkl.baihongyu.com/

你可能感兴趣的文章
分布式组件-识别引擎
查看>>
試用 Golang 抓取網站價錢
查看>>
Xcode - Code Snippets 代码块
查看>>
手动创建JavaWeb项目
查看>>
iOS--Cocoapods
查看>>
判断奇偶数
查看>>
Git详解之七 自定义Git
查看>>
hive与hbase的联系与区别
查看>>
仓储控制系统软件(WCS)
查看>>
iMatrix平台只有小窗体管理员才能看到注册小窗体按钮
查看>>
从前端角度理解缓存
查看>>
ipad视频导入重新命名排序
查看>>
搜索引擎
查看>>
Python实现抓取城市的PM2.5浓度和排名
查看>>
中国企业的等级制度
查看>>
web开发之浏览器(三)----浏览器常用事件及属性
查看>>
四种形式的乘法表---PHP编写
查看>>
pcDuino 3维模型
查看>>
iOS应用架构谈 网络层设计方案 一 (转帖)
查看>>
指针和数组
查看>>