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 パターンのの"前にa がありません。$

ところで、パターンは機能しますが、おそらく意図したものとは異なる方法で機能します。この場合、文字クラス[0-9m]は 1 文字だけに一致します。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 に答える