grep

您所在的位置:网站首页 用正则表达式提取身份证号码的方法 grep

grep

2023-12-08 23:18| 来源: 网络整理| 查看: 265

力扣题目要求如下:

给定一个包含电话号码列表(一行一个电话号码)的文本文件 file.txt,写一个 bash 脚本输出所有有效的电话号码。

你可以假设一个有效的电话号码必须满足以下两种格式: (xxx) xxx-xxxx 或 xxx-xxx-xxxx。(x 表示一个数字)

你也可以假设每行前后没有多余的空格字符。

示例:

假设 file.txt 内容如下:

987-123-4567 123 456 7890 (123) 456-7890

你的脚本应当输出下列有效的电话号码:

987-123-4567 (123) 456-7890 分析题干

题中谈到每行只有一个号码,号码呢只有两种格式,行外没有多余空格。好了,搞起~

过滤字符,shell工具常用的还是grep、awk、sed提炼正则条件之后,三者通吃 条件含义^匹配开头$匹配结尾[0-9]{3}匹配字符集0-9内,3个字符|或

这里匹配该条件的正则表达式:’^([0-9]{3}-|([0-9]{3}) )[0-9]{3}-[0-9]{4}$’

原文件内容 file.txt

# cat file.txt 987-123-4567 123 456 7890 (123) 456-7890 调配参数各自玩耍 grep式 grep -E '^([0-9]{3}-|\([0-9]{3}\) )[0-9]{3}-[0-9]{4}$' file.txt -E 参数表示匹配正则 awk式 awk '/^([0-9]{3}-|\([0-9]{3}\) )[0-9]{3}-[0-9]{4}$/' file.txt ‘/…/’ 格式表示匹配正则输出 sed式 sed -n -r '/^([0-9]{3}-|\([0-9]{3}\) )[0-9]{3}-[0-9]{4}$/p' file.txt -r 参数表示匹配正则-n 参数表示关闭每行输出(默认会每行输出,影响输出结果),只打印符合条件字符串'/…/'p ,将符合条件的字符串打印显示。通常 p 会与参数 sed -n 一起执行

输出结果皆为:

987-123-4567 (123) 456-7890

题目内容来源力扣,链接:https://leetcode-cn.com/problems/valid-phone-numbers



【本文地址】


今日新闻


推荐新闻


    CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3