我在文本文件中有以下字符串(大文件,更像是这些和不同):
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"
似乎不起作用。
谢谢!
答案 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