你可以使用 grep
命令结合正则表达式来匹配有效的电话号码格式:
grep -E '^(\([0-9]{3}\) [0-9]{3}-[0-9]{4}|[0-9]{3}-[0-9]{3}-[0-9]{4})$' file.txt
解释:
grep -E
:使用扩展正则表达式(等价于egrep
)。^(\([0-9]{3}\) [0-9]{3}-[0-9]{4}|[0-9]{3}-[0-9]{3}-[0-9]{4})$
^
和$
:确保整个行是电话号码,没有额外字符。\([0-9]{3}\) [0-9]{3}-[0-9]{4}
:匹配(xxx) xxx-xxxx
格式:\([0-9]{3}\)
:匹配区号(xxx)
,注意()
需要转义。- (空格):区号后必须有一个空格。
[0-9]{3}-[0-9]{4}
:匹配xxx-xxxx
。
|
:表示“或”。[0-9]{3}-[0-9]{3}-[0-9]{4}
:匹配xxx-xxx-xxxx
格式。
这个脚本会从 file.txt
读取数据,并输出所有格式正确的电话号码。