Linux shell 脚本:复制(文本)文件并用路径替换标记

Linux shell 脚本:复制(文本)文件并用路径替换标记

我需要创建一个文本文件,其中的部分内容应由任意路径替换。我想通过复制模板文件,然后替换特殊模式(例如,${MY_PATH}用任意路径替换)来实现这一点(我希望不需要引用)。如何替换部分(sed到目前为止我看到的示例似乎由于任意路径而存在问题)。

答案1

替代品不需要太多引用:仅需反斜杠和正则表达式分隔符。为了方便起见,后者通常可以任意选择 - 在许多程序中,可以使用 s|...|...| 或类似名称来代替 s/.../.../。

假设路径是$path,您可以执行以下操作:

epath=${path//'\'/'\\'}
epath=${epath//'|'/'\|'}
sed "s|\${MY_PATH}|$epath|g" < in > out

或者如果你不害怕其他语言,你可以使用:

perl -e 'my $path = shift(@ARGV); while (<STDIN>) {s|\$\{MY_PATH\}|$path|g; print}' "$path" < in

(我不确定我的样本是否正确,但你明白我的意思。)

相关内容