2012-03-08 106 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