zoukankan      html  css  js  c++  java
  • 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)

    You may also assume each line in the text file must not contain leading or trailing white spaces.

    For example, assume that file.txt has the following content:

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

    Your script should output the following valid phone numbers:

    987-123-4567
    (123) 456-7890
    
    主要考察正则表达式的写法和awk的使用
    awk '$0 ~ /^[0-9]{3}-[0-9]{3}-[0-9]{4}$|^([0-9]{3}) [0-9]{3}-[0-9]{4}$/ {print $0}' file.txt

    遇到的问题:

      1、$0就表示整行记录,因此不用使用FS=“ ”,$1来操作

      2、awk的正则

        先看下一段代码

    awk '$0 ~ /^d{3}-d{3}-d{4}$|^(d{3}) d{3}-d{4}$/ {print $0}' file.txt

        运行会发现是错误的,因此推测d在awk是非法的

      3、正则表达式的分支(|)  

      4、^和$,如果不加会出错,比如下面的实例

        0(101) 001-1223

        0123-456-7891

        123-456-78910

        (001) 345-00001

  • 相关阅读:
    拦截器
    git和bootstrap
    java面试题目
    Struts2笔记
    sql语句的面试题
    公司面试总结
    面试题12 包含 min 函数的栈 【栈】
    面试题11 字符串的排列[算法]
    [面试] 进程和线程的区别(面试题)
    [baidu] 面向对象的三个基本要素和五项基本设计原则
  • 原文地址:https://www.cnblogs.com/qionghua520/p/4375674.html
Copyright © 2011-2022 走看看