sed中的特殊字符

时间:2012-09-16 11:15:23

标签: regex sed grep

有人知道sed中完整的特殊字符列表是什么吗?

请不要给出答案,它是grep的特殊字符列表,因为这只是将我的问题转换为:有人知道{{1}中完整的特殊字符列表是什么是吗?

2 个答案:

答案 0 :(得分:5)

这取决于。严格来说,符合标准的sed必须只使用基本正则表达式 the standard表示:

BRE特殊字符及其具有特殊含义的上下文如下:

.[\句点,左方括号和反斜杠应该是特殊的,除非在括号表达式中使用(请参阅RE括号表达式)。包含' ['没有反斜杠且不是括号表达式的一部分会产生未定义的结果。

*星号应该是特殊的,除非在括号表达式中使用,作为整个BRE的第一个字符(在初始' ^'之后,如果有的话),或作为子表达式的第一个字符(在初始' ^'之后,如果有的话);看BREs匹配多个字符

^当用作锚点时,抑扬符应该是特殊的(参见BRE表达式锚点)  或作为括号表达式的第一个字符(请参阅RE括号表达式)

$当用作锚时,美元符号应该是特殊的。

所以完整的列表是.[\*^$,但是上下文很重要。此外,许多sed提供了使用扩展正则表达式(ERE)的选项,这将扩展列表并更改字符特殊的上下文。例如,如果没有ERE,则使用\(\)形成分组,但ERE ()本身是特殊的,必须进行转义以便按字面匹配。

答案 1 :(得分:3)

我认为这是完整的字符列表[\ ^ $。|?* +(),sed将以不同于普通字符的方式响应。