有人知道sed
中完整的特殊字符列表是什么吗?
请不要给出答案,它是grep
的特殊字符列表,因为这只是将我的问题转换为:有人知道{{1}中完整的特殊字符列表是什么是吗?
答案 0 :(得分:5)
这取决于。严格来说,符合标准的sed必须只使用基本正则表达式 the standard表示:
BRE特殊字符及其具有特殊含义的上下文如下:
.[\
句点,左方括号和反斜杠应该是特殊的,除非在括号表达式中使用(请参阅RE括号表达式)。包含' ['没有反斜杠且不是括号表达式的一部分会产生未定义的结果。
*
星号应该是特殊的,除非在括号表达式中使用,作为整个BRE的第一个字符(在初始' ^'之后,如果有的话),或作为子表达式的第一个字符(在初始' ^'之后,如果有的话);看BREs匹配多个字符
^
当用作锚点时,抑扬符应该是特殊的(参见BRE表达式锚点)
或作为括号表达式的第一个字符(请参阅RE括号表达式)
$
当用作锚时,美元符号应该是特殊的。
所以完整的列表是.[\*^$
,但是上下文很重要。此外,许多sed提供了使用扩展正则表达式(ERE)的选项,这将扩展列表并更改字符特殊的上下文。例如,如果没有ERE,则使用\(
和\)
形成分组,但ERE (
和)
本身是特殊的,必须进行转义以便按字面匹配。
答案 1 :(得分:3)
我认为这是完整的字符列表[\ ^ $。|?* +(),sed将以不同于普通字符的方式响应。