【发布时间】: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 不需要的字符之前需要反斜杠)。