使用 sed 替换电话号码

使用 sed 替换电话号码

我的 txt 文件包含电话号码(233)- 332-9888,我想将其替换为###-###-####.
我正在做s|[0-9]{3}-[0-9]{3}-[0-9]{4}|###-###-####|g(在扩展模式下),我的问题是我不知道如何在第一个中匹配括号[0-9]{3}

答案1

sed -E 's|\([0-9]{3}\)- [0-9]{4}-[0-9]{4}|###-###-####|g'

括号需要转义,因为它们在扩展正则表达式中被特殊处理。

答案2

如果您想将电话号码替换为标准的 10 位类似 NANP 的字符串,即 ###-###-####:

$ echo "(123) -456-7890" | sed 's/(\([0-9]\{3\}\)) -\([0-9]\{3\}-[0-9]\{4\}\)/###-###-####/g'
###-###-####

如果您想重新格式化电话号码以匹配 10 位 NANP 格式:

$ echo "(123) -456-7890" | sed 's/(\([0-9]\{3\}\)) -\([0-9]\{3\}-[0-9]\{4\}\)/\1-\2/g' 
123-456-7890

相关内容