我的 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