【发布时间】:2017-11-15 06:17:08
【问题描述】:
我有一个包含几个电话号码和其他重要数据的文本文件。我想将所有电话号码替换为预定义的文本,比如 XXXXXXXXXX。
如何使用 sed/awk 做到这一点?正则表达式
^\s*(?:\+?(\d{1,3}))?[-. (]*(\d{3})[-. )]*(\d{3})[-. ]*(\d{4})(?: *x(\d+))?\s*$
对我不起作用。
输入:
Add me 7598128789
Pls add mi 9761500634
Add 8870504046
spam post
magar maddam is not required
all hero hain
All follows
输出:
Add me XXXXXXXXXX
Pls add mi XXXXXXXXXX
Add XXXXXXXXXX
spam post
magar maddam is not required
all hero hain
All follows
【问题讨论】:
-
如果您阅读
man页面,您会发现BRE/ERE不支持\d或非贪婪或未命名的捕获组等 -
是的,总是 10 位数字。
-
@Sundeep, \d 将是必需的参数,对吧?否则 sed 表达式不起作用。
-
您的样本、cmets 和正则表达式都尝试过造成很多混乱......如果电话号码都是 10 位数字,为什么还需要
[-. (]?\d在某些正则表达式中是[0-9]的快捷方式,但在 BRE/ERE 中不起作用...