未终止的 s 命令,带有特殊字符的种子和 sed

未终止的 s 命令,带有特殊字符的种子和 sed

我在 $VALUE 的内容中有特殊字符,我想将其添加到文件 ( $FILE) 中。

当我运行这个命令时:

sed -i "s|T_VALUE|$VALUE|" "$FILE"

我有一个错误未终止 s 命令

我看到一些帖子说我需要转义特殊字符,但我不知道它们是$VALUE动态值。我该如何解决这个问题?

答案1

您可以使用 Perl 进行更精美的引用。为了避免混淆,您可以通过环境变量传递参数。

$ SUB_LH='?|'
$ SUB_RH='/\'
$ cat mydata.txt
x?|y
?|ab?|
$ SUB_LH=$SUB_LH SUB_RH=$SUB_RH perl -p -i.bak -e 's/\Q$ENV{SUB_LH}\E/$ENV{SUB_RH}/g' mydata.txt
$ cat mydata.txt
x/\y
/\ab/\

相关内容