2

我正在尝试使用tcl命令分隔符“[]”替换文件中的字符串sed

例子:

string [$HelloWorld]必须替换为$HelloWord. 请注意,它没有括号,要修改的文件是 TCL 文件。我将如何使用sed命令来做到这一点?

我试过这个:

sed -i 's@[$HelloWorld]@$HelloWorld@g' <file_path>
4

1 回答 1

4

您需要转义[]因为它们被解释为正则表达式中的字符类而不是文字方括号:

$ sed 's/\[$HelloWorld\]/$HelloWorld/g' file
string $HelloWord

您可以在此处使用捕获组:

$ sed 's/\[\($HelloWorld\)\]/\1/g' file
string $HelloWord

如果sed 's/[][]//g'要从文件中删除所有方括号,请使用:

# First check changes are correct
$ sed 's/[][]//g' file
string $HelloWorld

# Store the change back to the file 
$ sed -i 's/[][]//g' file

# Store changes back to the file and create back up of the original 
$ sed -i.bak 's/[][]//g' file
于 2013-02-01T12:39:21.943 回答