转义 sed 中 xpath 的特殊字符



我一直在尝试使用 sed 输入一个值,其中包含多个特殊字符。示例值//*[@id='login_username']

如果我们在没有任何转义字符的情况下使用此值,则该命令将如下所示:

sed -i 's/Text to be replaced/new text and some xpath like //*[@id='login_username']/' target.txt

我尝试使用字符转义每个特殊字符,结果为以下结构://*[@id='login_username']

还尝试用双引号将值括起来,但这也不起作用。我还能尝试什么?

您可以在s///命令中使用不同的分隔符而不是/,例如s|||

sed -i "s|Text to be replaced|new text and some xpath like //*[@id='login_username']|" target.txt

在替换文本中,您唯一需要转义的内容是:

  • "因为它用于将sed参数括起来
  • |因为它在s///命令中用作分隔符

您可以使用转义这些,例如"|.

最新更新