如何在 SED 命令中使用变量 (bash)

How to use variables in SED command (bash)

我有这 3 个 sed 命令:

sed -i '10,$s/-.*/-$LOWX:HIGHX+$HIGHX]/' plot.p
sed -i '11,$s/+.*/+$HIGHY]/' plot.p
sed -i '14,$s/+.*/+$HIGHY/' plot.p

它应该转到第一个值(即 10、11、14)表示的行并替换指定字符(即 -、+)之后的文本。

目前,我的 sed 命令无法识别变量($LOWX、$HIGHX 和 $HIGHY),它只是用文字“$LOWX”进行替换。

如何让我的 sed 命令识别其中的变量?

我看到类似问题的其他答案说要使用双引号,但这导致我的 sed 命令被误解,因此它不能 运行。

我的输出:

set xr[LOWX-$LOWX:HIGHX+$HIGHX]
set yr[0:HIGHY+$HIGHY]
set ytics 0,1,HIGHY+$HIGHY

期望的输出:

set xr[LOWX-2:HIGHX+2]
set yr[0:HIGHY+1]
set ytics 0,1,HIGHY+1

这是否为您提供了您想要的输出?

sed -i "10,$s/-.*/-$LOWX:HIGHX+$HIGHX]/" plot.p
sed -i "11,$s/+.*/+$HIGHY]/" plot.p
sed -i "14,$s/+.*/+$HIGHY/" plot.p

单引号可以。以我的作为快速参考:

LAUNCH_APP="./xxx/launch-app.sh"
OLD_PROXY="xx-proxy.uds"
num=$(sed -n "/$OLD_PROXY/=" "$LAUNCH_APP")
sed -i ''${num}'s/^/#/' "$LAUNCH_APP"