Regex 如何围绕以开头的文本!直到sed中带有转义字符的行结束?
我想: 以字母开头的前缀文本!ESC E为ESC八进制代码的行中的字符\033 在文本上方添加后缀,并在行尾添加ESC F。 这就是我尝试过的:Regex 如何围绕以开头的文本!直到sed中带有转义字符的行结束?,regex,sed,freebsd,Regex,Sed,Freebsd,我想: 以字母开头的前缀文本!ESC E为ESC八进制代码的行中的字符\033 在文本上方添加后缀,并在行尾添加ESC F。 这就是我尝试过的: sed $'s/\(!.*\)/\033E\1\033F/' 这是我得到的错误: $ echo "test line ! This part shall be enclosed with ESC commands" | sed $'s/\(!.*\)/\033E\1\033F/' sh: Syntax error: Bad
sed $'s/\(!.*\)/\033E\1\033F/'
这是我得到的错误:
$ echo "test line ! This part shall be enclosed with ESC commands" | sed $'s/\(!.*\)/\033E\1\033F/'
sh: Syntax error: Bad escape sequence
如果我删除$符号,可以看到文本被检测到并包含在内,但sed无法插入ESC字符
$ echo "test line ! This part shall be enclosed with ESC commands" | sed 's/\(!.*\)/\033E\1\033F/'
test line 033E! This part shall be enclosed with ESC commands033F
我使用的是FreeBSD 12 sed,根据手册页,它有望成为IEEE Std 1003.2 POSIC.2规范的超集。仅对所需部分应用$“..”:
$s='测试线!该部分应包含ESC命令'
$echo$s|sed's/\!.\/'$'\033E\1'$'\033F/'|第五类
测试线^[E!该部分应包含ESC命令^[F
不确定其他版本,但在GNU-sed上,可以使用十六进制和八进制。注意,o直接转义,因此可以执行以下操作:
$echo$s | sed's/\!.\/\x1BE\1\x1BF/'| cat-v
测试线^[E!该部分应包含ESC命令^[F
$echo$s | sed's/\!.\/\o033E\1\o033F/'|第五类
测试线^[E!该部分应包含ESC命令^[F
仅对所需部分应用$'..:
$s='test line!此部件应包含ESC命令'
$echo$s | sed's/\!.\/'$'\033E\1'$'\033F/'|第五类
测试线^[E!该部分应包含ESC命令^[F
不确定其他版本,但在GNU-sed上,可以使用十六进制和八进制。注意,o直接转义,因此可以执行以下操作:
$echo$s | sed's/\!.\/\x1BE\1\x1BF/'| cat-v
测试线^[E!该部分应包含ESC命令^[F
$echo$s | sed's/\!.\/\o033E\1\o033F/'|第五类
测试线^[E!该部分应包含ESC命令^[F