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

2桁のみの保証ができますか?

sed -i 's/^databases [0-9][0-9]/databases 32/' redis.conf 
関連する問題