String sed-用特殊字符替换字符串

String sed-用特殊字符替换字符串,string,shell,unix,sed,String,Shell,Unix,Sed,我想用下一个字符串替换第一个字符串 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. S

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

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
查找表达式中的方括号似乎找不到。

请尝试以下操作:

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

特殊字符,如\、[、]、(、)和。一定要逃走

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