我必须编写简短的脚本来替换文件中的行。有些行包含斜杠和左方括号(也可能是右方)。
我知道应该使用另一个定界符将斜线替换为行。
我的代码:
sed -i -e "s|${oldLine}|${newLine}|g"
这会引发错误,因为行包含[。
要更改的示例字符串(oldLine变量):
// List exampleList = [
示例更改后的外观:
List exampleList = [
当有一些字符,例如[
要复制:
sed -i -e 's|// List exampleList = [|List exampleList = [|g' test.txt
答案 0 :(得分:0)
您需要转义$ oldline和$ newline中的“坏”字符。命令
sed -e 's/\\/\\\\/g; s/\([[&()/\]]\)/\\\1/g'
将\,[,&,(,),/,]
替换为\\,\[
,依此类推。因此,组合命令
sed -e "s/$(echo $oldline | sed -e 's/\\/\\\\/g; s/\([[&()/\]]\)/\\\1/g')/$(echo $newline | sed -e 's/\\/\\\\/g; s/\([[&()/\]]\)/\\\1/g')/g"
会做你想要的。