題目:
給定一個(gè)包含電話號(hào)碼列表(一行一個(gè)電話號(hào)碼)的文本文件 file.txt搀别,寫(xiě)一個(gè)單行 bash 腳本輸出所有有效的電話號(hào)碼此再。
你可以假設(shè)一個(gè)有效的電話號(hào)碼必須滿足以下兩種格式: (xxx) xxx-xxxx 或 xxx-xxx-xxxx蔚晨。(x 表示一個(gè)數(shù)字)
你也可以假設(shè)每行前后沒(méi)有多余的空格字符。
示例:
假設(shè) file.txt 內(nèi)容如下:
987-123-4567
123 456 7890
(123) 456-7890
你的腳本應(yīng)當(dāng)輸出下列有效的電話號(hào)碼:
987-123-4567
(123) 456-7890
題解:
思路:
- 使用grep的正則表達(dá)式模式:-E
- 使用^$瞒窒,表示開(kāi)頭與末尾
- 使用()但骨,劃分使用范圍
- 使用|,表示或操作
- 使用\xxx致份,表示轉(zhuǎn)義字符
- 使用\s变抽,表示空格捌显;\s{m}碍庵,表示m個(gè)空格
- 使用[0-9]{m},表示m個(gè)數(shù)字
代碼:
grep -E '^([0-9]{3}-|\([0-9]{3}\)\s)[0-9]{3}-[0-9]{4}$' file.txt