1

我有脚本文件,它用文件中的一个单词替换了另一个单词。

这是我使用的一段代码。现在我面临的问题是当 Var1 和 Var2 是路径名时。我对 shell 脚本很陌生。我知道我应该在前面放一个转义序列。因为 var1 和 var2 是从 csv 文件中读取的我不能手动在它们上面放置转义序列。有没有办法在这个命令之前检测特殊字符并用转义序列替换它们

$f 是文件名

sed -i "s/$Var1/$Var2/g" "$f"
4

2 回答 2

1

嘿,

您可以使用不同的字符来分隔语句:

sed "s%PATTERN%PATTERN%"

sed 在命令之后看到的第一个字符将用于分隔您的模式。

在您的示例中,这可能是:

sed -i "s%$Var1%$Var2%g" "$f"

然后$Var1并且$Var2可以 持有 any/但 not %。如果必须将分隔符用作模式,则必须使用\.

于 2012-09-20T13:51:49.313 回答
0

您可以像这样引用变量:

sed -i 's@'"${Var1}"'@'"${Var2}"'@g' "${f}"

由于您在变量中提到了路径,因此也将通知/替换为。@

于 2012-09-20T13:44:40.157 回答