2017-06-13 123 views
-2

我有一个文本文件由少数电话号码和其他重要数据组成。我想将所有电话号码替换为预定义的文本,可以说XXXXXXXXXX。正则表达式替换电话号码与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 
+1

如果您阅读'man'页面,您会发现BRE/ERE不支持'\ d'或非贪婪或未命名的捕获组等。 – Sundeep

+0

是,始终为10位数。 – Prabhjot

+0

@Sundeep,\ d将是一个必需的参数,对吧? 否则,sed表达式不起作用。 – Prabhjot

回答

1

就可以像在Perl。

cat a |perl -npe 's/\d{10}/XXXXXXXXXX/g' 
0

GNU sed

sed -r 's/\b[0-9]{10}\b/XXXXXXXXXX/g' filename 
1

尝试:

gawk '{gsub(/[0-9]{10}/,"XXXXXXXXXX");print}' Input_file 

简单地替代10位连续用10号X串的,然后打印该行。