用SED和REGEX替换文本中的某些字符串

时间:2013-03-21 17:28:36

标签: regex 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和regex找到它们:

'[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"

似乎不起作用。

谢谢!

2 个答案:

答案 0 :(得分:4)

使用sed -r。您依赖扩展的正则表达式语法功能而不转义它们,但使用sed -r则不必。如果您想要删除行而不是仅清除它们,可以使用:

sed -r "/regex/d"

答案 1 :(得分: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