以下命令按预期工作,并显示redis.conf文件中的数据库数。我需要做的是将其更改为32并使用单个命令将其保存回同一文件。
# grep ^databases redis.conf | awk '{print $2}'
16
以下命令仅在数字为16时有效。如何将未知数字更改为32?
sed -i 's/databases\ 16/databases\ 32/' redis.conf
答案 0 :(得分:3)
您可以使用[0-9]*
或\d
或相应的POSIX字符类([:digit:]
)。像这样:
sed -i 's/databases\ [0-9]*/databases\ 32/' redis.conf
注意:由于shell转义,\d
可能需要或可能不需要额外的反斜杠。
另请注意:存在sed
(和awk
)的不同风格。
为了获得最高的便携性,我认为[0-9]
和[:digit:]
是最佳选择。要匹配一定数量的重复,请重复表达式。
答案 1 :(得分:1)
可以保证只有两位数吗?
sed -i 's/^databases [0-9][0-9]/databases 32/' redis.conf