【问题标题】:sed - Replace string with special characters [duplicate]sed - 用特殊字符替换字符串[重复]
【发布时间】:2019-10-14 03:11:39
【问题描述】:

我想用下一个替换第一个字符串

FindText[1]=/Folder 1/01. SubFolder/Demo(Object)

ReplaceText[1]=/Folder 1/01. SubFolder/02. SubFolder/Demo(Object)

我已尝试使用“|”使用此选项,但不起作用。

>>sed -i 's|FindText[1]=/Folder 1/01. SubFolder/Demo(Object)|ReplaceText[1]=/Folder 1/01. SubFolder/02. SubFolder/Demo(Object)|g' filename.txt

find 表达式中的方括号似乎没有找到。

【问题讨论】:

  • 方括号是正则表达式的特殊字符,必须转义。我很确定某处有重复。
  • 副本非常笼统,但绝对涵盖了您的情况。
  • 请注意,副本涵盖了很多领域。大多数情况下,sed 使用 POSIX BRE(基本正则表达式)语法,尽管现代版本通常有一个选项(-E 和/或-r)来启用 ERE(扩展正则表达式)语法。此外,您可以将换行符与\n 匹配;在 GNU 版本而非所有其他版本中,您可以在替换文本中使用 \n 作为换行符。 sed 的一些(许多)版本还具有对 ERE 语法的扩展,这些扩展接近 BRE 功能,但在符号上有所不同(在 ERE 不需要的字符之前需要反斜杠)。

标签: string shell unix sed


【解决方案1】:

试试这个:

sed -i 's|FindText\[1\]=/Folder 1/01. SubFolder/Demo(Object)|ReplaceText\[1\]=\/Folder 1\/01\. SubFolder\/02\. SubFolder\/Demo\(Object\)|g' filename.txt

特殊字符,如 \、[、]、(、) 和 .必须逃脱!

【讨论】:

    猜你喜欢
    • 2021-11-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-09-07
    • 2021-06-11
    相关资源
    最近更新 更多