在sed中使用通配符

时间:2012-03-08 03:50:00

标签: regex sed awk grep

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

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

以下命令仅在数字为16时有效。如何将未知数字更改为32?

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

2 个答案:

答案 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