1

我正在尝试通过 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
4

3 回答 3

3

您在 sed 模式中缺少"一个$

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

于 2012-10-12T09:41:54.947 回答
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
于 2012-10-12T09:46:06.437 回答
0

以下sed行对我有用,将其包含在"而不是'

 sed -ie "s/malloc,[0-9]\+m$/malloc,$malloc/gI" /etc/default/varnish
于 2012-10-12T09:53:31.937 回答