2016-07-21 12 views
0

私は次の文字列libVersion = '1.23.45.6'を持っています。1.23.45.61.23.45.7に置き換える必要があります。Bash - regexを見つけて別の文字列で置き換える

明らかに、バージョンは類似した形式の任意の数字(4つの数字である必要はありません)でもかまいません。

私は以下を使用しようとしたが、

echo "libVersion = '1.23.45.6'" |sed "s/([0-9\.]+)/1.23.45.7/g"

+1

'echo" libVersion = '1.23.45.6' "| sed" s/[0-9。] \ +/1.23.45.7/g " –

+1

または' echo "libVersion = '1.23.45.6'" | sed "s/'[^'] * '/' 1.23.45.7 '/ g" –

+0

ビンゴ!答えに入れてください。正しい答えとしてマークすることができます – Wins

答えて

1

を動作しません。つまり、引数なしのsed sedの基本は、BRE(基本正規表現)を使用しています。同様にキャプチャグループのため\(regex\)

echo "libVersion = '1.23.45.6'" | sed "s/[0-9.]\+/1.23.45.7/" 

BREでは、あなたはまた、すべてを置き換えるために否定文字クラスを使用して、前のトークン1回以上繰り返される正規表現+の力をもたらすために、+をエスケープする必要がありますcharは一重引用符で囲まれています。

echo "libVersion = '1.23.45.6'" | sed "s/'[^']*'/'1.23.45.7'/" 

置換は一度だけ行う必要があるため、gグローバル修飾語は必要ありません。

+1

@wiktorあなたは私を冗談を言う:P –

関連する問題