2017-06-13 62 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串的,然後打印該行。