2013-03-21 90 views
3

替換從文本中的某些字符串我有一個文本文件中的以下字符串(大單,更像是這些不同):與SED和正則表達式

79A18D7F-1517-5981-8446-3A0452727B06 
7842A72D-1517-5281-84E4-EAEF09B743F7 
6040BEE7-1517-5982-84C1-419B224E647E 
615F2747-1517-5981-84AF-787C34967FB2 
7468A3E3-1517-5931-84B3-3FC3F701C269 

我可以使用grep和正則表達式找到他們:

'[0-9A-F]{8}-[0-9]{4}-[0-9]{4}-[0-9A-F]{4}-[0-9A-F]{12}' 

什麼是sed的正則表達式語法來刪除它們,因爲:

sed "s/[0-9A-F]{8}-[0-9]{4}-[0-9]{4}-[0-9A-F]{4}-[0-9A-F]{12}//g" 

似乎並沒有工作。

謝謝!

回答

4

使用sed -r。您正在使用擴展的正則表達式語法功能而不會轉義它們,但使用sed -r則不必。如果你想要的只是清除它們實際刪除線相反,你可以使用:

sed -r "/regex/d" 
+0

哇,這真的很有用!謝謝! – bsteo 2013-03-21 17:34:00

+0

不,沒關係,我只是想刪除字符串不行。 – bsteo 2013-03-21 17:52:22

1

另外,對於普通的sed(BRE)你需要躲避大括號:

sed 's/[0-9A-F]\{8\}-[0-9]\{4\}-[0-9]\{4\}-[0-9A-F]\{4\}-[0-9A-F]\{12\}//g' file