2013-03-21 74 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