grep |
您所在的位置:网站首页 › 用正则表达式提取身份证号码的方法 › grep |
力扣题目要求如下:
给定一个包含电话号码列表(一行一个电话号码)的文本文件 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 |