我有脚本文件,它用文件中的一个单词替换了另一个单词。
这是我使用的一段代码。现在我面临的问题是当 Var1 和 Var2 是路径名时。我对 shell 脚本很陌生。我知道我应该在前面放一个转义序列。因为 var1 和 var2 是从 csv 文件中读取的我不能手动在它们上面放置转义序列。有没有办法在这个命令之前检测特殊字符并用转义序列替换它们
$f 是文件名
sed -i "s/$Var1/$Var2/g" "$f"
嘿,
您可以使用不同的字符来分隔语句:
sed "s%PATTERN%PATTERN%"
sed 在命令之后看到的第一个字符将用于分隔您的模式。
在您的示例中,这可能是:
sed -i "s%$Var1%$Var2%g" "$f"
然后$Var1
并且$Var2
可以 持有 any/
但 not %
。如果必须将分隔符用作模式,则必须使用\
.
您可以像这样引用变量:
sed -i 's@'"${Var1}"'@'"${Var2}"'@g' "${f}"
由于您在变量中提到了路径,因此也将通知/
替换为。@