2012-03-08 107 views
2

以下命令按预期工作,并显示redis.conf文件中的数据库数量。我需要做的是将其更改为32并使用单个命令将其保存回同一文件。在sed中使用通配符

# grep ^databases redis.conf | awk '{print $2}' 
16 

以下命令只适用于数字为16的情况。如何将未知数字更改为32?

sed -i 's/databases\ 16/databases\ 32/' redis.conf 

回答

2

你可以使用[0-9]*\d或相应的POSIX字符类([:digit:])。像这样:

sed -i 's/databases\ [0-9]*/databases\ 32/' redis.conf 

注:\d可能会或可能不会因为壳逸出需要一个额外的反斜线。 另请注意:存在sed(和awk)的不同口味。

为了实现最高的便携性,我认为[0-9][:digit:]是最好的选择。要匹配一定数量的重复,重复表达式。

1

可以保证只有两位数吗?

sed -i 's/^databases [0-9][0-9]/databases 32/' redis.conf