转义sed表达式中替换字符串中的'\'字符

Chr*_*ieb 6 string bash escaping sed

我想尝试一行文字

    13) Check for orphaned Path entries
Run Code Online (Sandbox Code Playgroud)

并将其更改为(我希望bash颜色代码为输出着色,而不是在屏幕上显示)

\033[32m*\033[0m Check for orphaned Path entries
Run Code Online (Sandbox Code Playgroud)

使用bash颜色代码对星号进行着色,使其更加突出.我有一个sed命令执行大部分操作,除了它没有正确处理颜色代码,因为它将它们视为对替换文本的引用.

到目前为止我所拥有的:

sed "s/ *13) \(.*\)/ \033[32m*\033[0m \1/"
Run Code Online (Sandbox Code Playgroud)

当我在开头给出的字符串上运行时产生以下输出:

   13) Check for orphaned Path entries33[32m*  13) Check for orphaned Path entries33[0m Check for orphaned Path entries
Run Code Online (Sandbox Code Playgroud)

它取\ 0的\ 0并用原始字符串替换它.将替换字符串中的反斜杠加倍并没有什么区别; 我仍然得到相同的输出文本.

如何将bash颜色转义插入到sed替换表达式中?

Pau*_*ce. 9

sed你使用的机会可能不理解八进制,但它可能理解十六进制.试试这个版本,看它是否适合你(使用\x1b而不是\033):

sed "s/ *13) \(.*\)/ \x1b[32m*\x1b[0m \1/"
Run Code Online (Sandbox Code Playgroud)

  • 如果它是grok octal,请使用\ o033 (2认同)

Has*_*kun 8

你的'\ 033'实际上是一个单独的ESC(转义)字符,输出它你可以使用以下任何一种:

  • \o033
  • \d027
  • \x1B
  • \c[ 对于 CTRL-[