2013-05-19 105 views
0

試圖在文件內替換包括密碼在內的所有內容。使用sed通過正則表達式搜索和替換模式

 
password=xx%40%25PKz3L2jTa HTTP 

嘗試了以下sed命令,使用從http://en.wikipedia.org/wiki/Regular_expression

 
sed 's/password=(.)+/ /g' $file 

 
sed 's/password=[^ ]+/ /g' $file 

沒有上述作品的正則表達式。爲什麼?

+0

你必須逃避+。試試這個:sed's/password = [^] \ +// g'$ file – Alex

+0

您可以使用'sed -E'來啓用支持+的擴展模式。 – Haocheng

回答

2

嘗試使用-r參數:

sed -r 's/password=[^ ]+/ /g' $file 
+1

這依賴於GNU'sed'('-r'選項不是標準的)。使用經典的(POSIX)'sed',你會寫一個簡單的變體:'sed's/password = [^] [^] *// g'$ file'。 –

+0

謝謝你。它總是爲我工作,所以我忘了它不是標準。 –

0

標準sed不理解 「擴展」 的正則表達式,如 '+'。爲您兩種選擇:

啓用與

sed -E 's/password=[^ ]+/ /g' $file 

擴展正則表達式或使用標準正則表達式

sed 's/password=[^ ]*/ /g' $file 

我更喜歡第二個,因爲它更便於攜帶,不像第一個,它將使用空密碼字段。