​LeetCode刷题实战193:有效电话号码

算法的重要性,我就不多说了吧,想去大厂,就必须要经过基础知识和业务逻辑面试+算法面试。所以,为了提高大家的算法能力,这个公众号后续每天带大家做一道算法题,题目就从LeetCode上面选 !
今天和大家聊的问题叫做 有效电话号码,我们先来看题面:
https://leetcode-cn.com/problems/valid-phone-numbers/

Given a text file file.txt that contains list of phone numbers (one per line), write a one liner bash script to print all valid phone numbers.

You may assume that a valid phone number must appear in one of the following two formats: (xxx) xxx-xxxx or xxx-xxx-xxxx. (x means a digit)

题意

给定一个包含电话号码列表(一行一个电话号码)的文本文件 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

解题

思路一:grep命令

grep命令用于查找文件里符合条件的字符串,其中-P选项可以让grep使用perl的正则表达式语法。
Bash脚本:

grep -P '^(\d{3}-|\(\d{3}\) )\d{3}-\d{4}$' file.txt

思路二:sed命令

sed命令是利用script来处理文本文件,其中-n选项仅显示script处理后的结果,取消将模式空间中的内容自动打印出来,-r选项表示在脚本中使用扩展正则表达式。
Bash脚本:
sed -n -r '/^([0-9]{3}-|\([0-9]{3}\) )[0-9]{3}-[0-9]{4}$/p' file.txt
好了,今天的文章就到这里,如果觉得有所收获,请顺手点个在看或者转发吧,你们的支持是我最大的动力 。
上期推文:
LeetCode1-180题汇总,希望对你有点帮助!
LeetCode刷题实战181:超过经理收入的员工
LeetCode刷题实战182:查找重复的电子邮箱
LeetCode刷题实战183:从不订购的客户
LeetCode刷题实战184:部门工资最高的员工
LeetCode刷题实战185:部门工资前三高的所有员工
LeetCode刷题实战186:翻转字符串里的单词 II
LeetCode刷题实战187:重复的DNA序列
LeetCode刷题实战188:买卖股票的最佳时机 IV
LeetCode刷题实战189:旋转数组
LeetCode刷题实战190:颠倒二进制位
LeetCode刷题实战191:位1的个数
LeetCode刷题实战192:统计词频
(0)

相关推荐

  • linux shell bash

    shell脚本后台运行,加&,例如 ./xxx.sh & 这时候会给个pid 但ps -ef发现,这个脚本的名字叫-bash,而不是xxx.sh

  • Linux命令行基础,关于Bash需要知道的一些常识

    介绍 Linux越来越重要,对于开发者来说学习必要的bash技术必不可少,对运维来说更是如此.学习shell可以参考很多学习材料和图书,比如ChinaUnix论坛网中人大哥总结的<Shell十三 ...

  • linux bash算术运算和条件语句

    +, -, *(乘), /(除), **(乘方), %(取模) let var=算术运算符表达式 高级let用法:let i+=2 +=,-=,*=,/=,%=,**= 自增:let var++ va ...

  • Shell 函数

    linux shell 可以用户定义函数,然后在shell脚本中可以随便调用. shell中函数的定义格式如下: [ function ] funname [()]{action;[return in ...

  • Bash 脚本实现每次登录到 Shell 时可以查看 Linux 系统信息

    Linux 中有很多可以查看系统信息如处理器信息.生产商名字.序列号等的命令.你可能需要执行多个命令来收集这些信息.同时,记住所有的命令和他们的选项也是有难度.-- Magesh Maruthamut ...

  • ​LeetCode刷题实战17: 电话号码的字母组合

    算法的重要性,我就不多说了吧,想去大厂,就必须要经过基础知识和业务逻辑面试+算法面试.所以,为了提高大家的算法能力,这个公众号后续每天带大家做一道算法题,题目就从LeetCode上面选 ! 今天和大家 ...

  • ​LeetCode刷题实战260:只出现一次的数字 III

    算法的重要性,我就不多说了吧,想去大厂,就必须要经过基础知识和业务逻辑面试+算法面试.所以,为了提高大家的算法能力,这个公众号后续每天带大家做一道算法题,题目就从LeetCode上面选 ! 今天和大家 ...

  • ​LeetCode刷题实战258:各位相加

    算法的重要性,我就不多说了吧,想去大厂,就必须要经过基础知识和业务逻辑面试+算法面试.所以,为了提高大家的算法能力,这个公众号后续每天带大家做一道算法题,题目就从LeetCode上面选 ! 今天和大家 ...

  • ​LeetCode刷题实战257:二叉树的所有路径

    算法的重要性,我就不多说了吧,想去大厂,就必须要经过基础知识和业务逻辑面试+算法面试.所以,为了提高大家的算法能力,这个公众号后续每天带大家做一道算法题,题目就从LeetCode上面选 ! 今天和大家 ...

  • ​LeetCode刷题实战256:粉刷房子

    算法的重要性,我就不多说了吧,想去大厂,就必须要经过基础知识和业务逻辑面试+算法面试.所以,为了提高大家的算法能力,这个公众号后续每天带大家做一道算法题,题目就从LeetCode上面选 ! 今天和大家 ...

  • ​LeetCode刷题实战262:行程和用户

    算法的重要性,我就不多说了吧,想去大厂,就必须要经过基础知识和业务逻辑面试+算法面试.所以,为了提高大家的算法能力,这个公众号后续每天带大家做一道算法题,题目就从LeetCode上面选 ! 今天和大家 ...

  • ​LeetCode刷题实战255:验证前序遍历序列二叉搜索树

    算法的重要性,我就不多说了吧,想去大厂,就必须要经过基础知识和业务逻辑面试+算法面试.所以,为了提高大家的算法能力,这个公众号后续每天带大家做一道算法题,题目就从LeetCode上面选 ! 今天和大家 ...

  • ​LeetCode刷题实战263:丑数

    算法的重要性,我就不多说了吧,想去大厂,就必须要经过基础知识和业务逻辑面试+算法面试.所以,为了提高大家的算法能力,这个公众号后续每天带大家做一道算法题,题目就从LeetCode上面选 ! 今天和大家 ...

  • ​LeetCode刷题实战254:因子的组合

    算法的重要性,我就不多说了吧,想去大厂,就必须要经过基础知识和业务逻辑面试+算法面试.所以,为了提高大家的算法能力,这个公众号后续每天带大家做一道算法题,题目就从LeetCode上面选 ! 今天和大家 ...