作者热门文章
- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我有一个文件:每一行由一个名字、房间号、住所地址、电话号码组成。
我想搜索区号为 404 或 202 的线路。我做了“(404)|(202)”,但它也给了我电话号码中的数字而不是区号的行,例如:
John Smith 300 123 N. Street 808-543-2029
我不想要上面的内容,我的目标是这样的行,示例:
Danny Brown 173 555 W. Avenue 202-383-1540
Martha Keith 567 322 S. Example 404-653-1200
最佳答案
让我们考虑这个测试文件:
$ cat addresses
John Smith 202 404 N. Street 808-543-2029
Danny Brown 173 555 W. Avenue 202-383-1540
Martha Keith 567 322 S. Example 404-653-1200
与其他三位数字不同,区号的显着特征是它们前面有一个空格,后面有一个 -
。因此,使用:
$ grep -E ' (202|404)-' addresses
Danny Brown 173 555 W. Avenue 202-383-1540
Martha Keith 567 322 S. Example 404-653-1200
假设电话号码出现在行尾,但可以是 808-543-2029
、8085432029
或 808 543 2029 三种形式中的任何一种
如以下示例所示:
$ cat addresses
John Smith 202 404 N. Street 808-543-2029
Danny Brown 173 555 W. Avenue 2023831540
Martha Keith 567 322 S. Example 404 653 1200
要选择区号为 202 或 404 的线路:
$ grep -E ' (202|404)([- ][[:digit:]]{3}[- ][[:digit:]]{4}|[[:digit:]]{7})$' addresses
Danny Brown 173 555 W. Avenue 2023831540
Martha Keith 567 322 S. Example 404 653 1200
如果电话号码后面可能有零散的空格,则使用:
$ grep -E ' (202|404)([- ][[:digit:]]{3}[- ][[:digit:]]{4}|[[:digit:]]{7})[[:blank:]]*$' addresses
Danny Brown 173 555 W. Avenue 2023831540
Martha Keith 567 322 S. Example 404 653 1200
关于regex - Grep 正则表达式 : How to find multiple area codes in phone number?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48820773/
我是一名优秀的程序员,十分优秀!