使用sed更改配置的Bash脚本

时间:2012-10-12 09:37:37

标签: regex linux bash sed

我正在尝试通过bash脚本将malloc的值更改为1234m,但没有看到任何更改。我认为这是我的正则表达式的一个问题,任何人都可以看到我做的正确吗?

字符串

DAEMON_OPTS="-a :6081 \
             -T localhost:6082 \
             -f /etc/varnish/default.vcl \
             -S /etc/varnish/secret \
             -s malloc,256m"

代码

# get the memory allocation
echo "Enter the memory allocation"
read malloc

# update the default config
sed -ie 's/malloc,.*[0-9m]$/malloc,'$malloc'/gI' /etc/default/varnish

3 个答案:

答案 0 :(得分:3)

您在sed模式中的"之前缺少$

顺便说一下,你的模式有效,但方式与你想要的方式不同:在这种情况下,字符类[0-9m]只匹配一个字符m。该号码与.*匹配。更好的模式可能是malloc,[0-9]\+m"$

答案 1 :(得分:1)

尝试使用此sed命令:

在Mac上:

sed -E 's/malloc,[0-9]+m/malloc,'$malloc'/' /etc/default/varnish

或在Linux上:

sed -r 's/malloc,[0-9]+m/malloc,'$malloc'/' /etc/default/varnish

答案 2 :(得分:0)

以下sed行适用于我,将其封在"而不是'中:

 sed -ie "s/malloc,[0-9]\+m$/malloc,$malloc/gI" /etc/default/varnish