Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Regex 正则表达式将电话号码替换为XXXXXXXXX_Regex_Awk_Sed_Replace - Fatal编程技术网

Regex 正则表达式将电话号码替换为XXXXXXXXX

Regex 正则表达式将电话号码替换为XXXXXXXXX,regex,awk,sed,replace,Regex,Awk,Sed,Replace,我有一个由几个电话号码和其他重要数据组成的文本文件。我想将所有电话号码替换为预定义的文本,比如XXXXXXXXX 如何使用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

我有一个由几个电话号码和其他重要数据组成的文本文件。我想将所有电话号码替换为预定义的文本,比如XXXXXXXXX

如何使用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

您可以在perl中这样做

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

使用
GNU sed

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


只需用10个X字符串替换10个连续数字,然后打印该行。

如果您阅读
man
页面,您会发现BRE/ERE不支持
\d
或非贪婪或未命名的捕获组,等等,总是10个数字。@Sundeep,\d将是必需的参数,对吗?sed表达式在其他情况下不起作用。您的示例、注释和正则表达式都试图创建,造成了大量混乱。。。如果电话号码都是10位数,为什么需要
[-.(]
\d
在某些正则表达式中是
[0-9]
的快捷方式,但在BRE/ERE中不起作用。。。
gawk '{gsub(/[0-9]{10}/,"XXXXXXXXXX");print}'   Input_file