2017-06-13 8 views
-2

電話番号やその他の重要なデータからなるテキストファイルがあります。すべての電話番号をあらかじめ定義されたテキストに置き換えて、XXXXXXXXXXと言うことができます。Regexは電話番号を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の中のように行うことができます。 GNU sed

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

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

試み:10 X列の数と、行を印刷すると

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

単純に置き換えて10連続桁。

関連する問題