私は次の文字列libVersion = '1.23.45.6'
を持っています。1.23.45.6
を1.23.45.7
に置き換える必要があります。Bash - regexを見つけて別の文字列で置き換える
明らかに、バージョンは類似した形式の任意の数字(4つの数字である必要はありません)でもかまいません。
私は以下を使用しようとしたが、
echo "libVersion = '1.23.45.6'" |sed "s/([0-9\.]+)/1.23.45.7/g"
私は次の文字列libVersion = '1.23.45.6'
を持っています。1.23.45.6
を1.23.45.7
に置き換える必要があります。Bash - regexを見つけて別の文字列で置き換える
明らかに、バージョンは類似した形式の任意の数字(4つの数字である必要はありません)でもかまいません。
私は以下を使用しようとしたが、
echo "libVersion = '1.23.45.6'" |sed "s/([0-9\.]+)/1.23.45.7/g"
を動作しません。つまり、引数なしの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
グローバル修飾語は必要ありません。
@wiktorあなたは私を冗談を言う:P –
'echo" libVersion = '1.23.45.6' "| sed" s/[0-9。] \ +/1.23.45.7/g " –
または' echo "libVersion = '1.23.45.6'" | sed "s/'[^'] * '/' 1.23.45.7 '/ g" –
ビンゴ!答えに入れてください。正しい答えとしてマークすることができます – Wins