在 windows cmder 中使用 sed 替换特殊字符....并使用 url 参数出现奇怪的错误

Replacing special characters using sed within windows cmder....and getting an strange error with url parameter

我在 post 上读到,当使用 sed -i 来替换包含特殊字符的值时,必须使用“|”而不是替换简单文本单词时有效的“/”。

例如:sed -i 's|'$original_value'|'$new_value'|g'

其中 original_value="comprising_special_char_/" new_value="comprising_new_special_char:

我已经尝试使用更短、更简单的字符串进行此操作并且效果很好,但是当我尝试使用以下字符串进行此操作时收到错误消息。

sed -i 's|'category=2fLShbTEL0cKrSR7J9S2hk&emailRedirect=Y'|'utm_source=marketingcloud&utm_medium=email&utm_campaign=p8%202021%20donutshop%20lifestyle&utm_content=primary%20cta&brand=Donut%20Shop&emailRedirect=Y'|gi' *.html

任何人都可以提供帮助,说明为什么当 运行 在 windows cmder(使用 gnu)中执行上述命令时出现如下所示的错误?

''category' 不是内部或外部命令,也不是可运行的程序或批处理文件。

您需要使用

  • sed 命令用双引号引起来
  • 仅在替换中转义 & 个字符。

所以你需要使用

sed -i "s|category=2fLShbTEL0cKrSR7J9S2hk&emailRedirect=Y|utm_source=marketingcloud\&utm_medium=email\&utm_campaign=p8%202021%20donutshop%20lifestyle\&utm_content=primary%20cta\&brand=Donut%20Shop\&emailRedirect=Y|gi" *.html