gpt4 book ai didi

linux - 如何将 sed 与需要转义的变量一起使用

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:57:29 28 4
gpt4 key购买 nike

我有一个文件,我正在尝试使用 bask 将子字符串的所有内容替换为路径。

我可以使用命令:

sed -i s/{WORKSPACE}/$MYVARIABLE/g /var/lib/jenkins/jobs/MY-JOB/workspace/config/params.ini

我的 config/params.ini 看起来像:

[folders]
folder1 = {WORKSPACE}/subfolder1
folder2 = {WORKSPACE}/subfolder2

但是,当 $MYVARIABLE 是一个路径时,它会失败(包含斜杠),sed 命令失败并显示:

sed: -e expression #1, char 16: unknown option to `s'

当我手动运行它时,我看到 $MYVARIABLE 需要对其路径斜线进行转义。如何修改我的 sed 命令以合并 $MYVARIABLE 的转义版本?

最佳答案

没有人说您必须使用 / 作为分隔符。 sed 将(几乎)使用您插入其中的任何内容。我倾向于使用 |,因为它从不(很少?)出现在路径中。

sridhar@century:~> export boong=FLEAK 
sridhar@century:~> echo $PATH | sed "s|/bin|/$boong|g"
~/FLEAK:/usr/local/FLEAK:/usr/local/sbin:/usr/local/games:/FLEAK:/sbin:/usr/FLEAK:/usr/sbin:/usr/games:/usr/lib/lightdm/lightdm:/home/oracle/app/oracle/product/12.1.0/server_1/FLEAK
sridhar@century:~>

使用双引号将允许 shell 执行变量替换。

关于linux - 如何将 sed 与需要转义的变量一起使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24534592/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com