sed中[]内的锚点

Syn*_*ead 2 regex sed

使用sed,为什么这匹配:

sed 's/test$/pass/' <<< "test"
Run Code Online (Sandbox Code Playgroud)

......什么时候不这样?

sed 's/test[$]/pass/' <<< "test"
Run Code Online (Sandbox Code Playgroud)

p.s*_*w.g 6

因为[…]在正则表达式中表示一个字符类,所以[$]匹配单个文字$字符.

换句话说,您无法匹配字符类中的锚点.因此,如果您想要匹配一个a或一个b字符或字符串的结尾,请使用替换:

sed 's/test([ab]|$)/pass/' <<< "test"
Run Code Online (Sandbox Code Playgroud)