この変数を「5.6.10」の値に置き換えたいと思います。
VERSION=5.4.38
現在の値を知ると、何をすべきかがわかります(5.4.38)
sed s:VERSION=5.4.38:VERSION=5.6.10:g
しかし、値がわからなくても(多くのファイルやスクリプトに役立つ)、5.6.10の内容に置き換えたいと思います。私はこれを試しました
sed s:VERSION=[0-9].[0-9].[0-90-9]:VERSION=5.6.10:g
しかし、結果は変です。
VERSION=5.6.100
10が100になった理由は何ですか?
私も試しました
sed s:VERSION=[0-9].[0-9].[0-9]:VERSION=5.6.10:g
私は同じ結果を見る。
ベストアンサー1
[0-90-9]
任意の数字である可能性がある文字と一致します。あなたが意味するのは、[0-9][0-9]
2つの数字が正確に一致することです。どちらの試みでも、の最後の数字は5.6.100
正規表現と一致しないため、出力には変更されていません。
別の潜在的な問題は正規表現.
の特殊文字です。これはすべての文字と一致します。たとえば、[0-9].[0-9].[0-9][0-9]
match123.45
または1a2b34
.は点を一致させるために使用されます\.
。特殊文字の前にバックスラッシュがある場合は、特殊文字ではありません。
また、バージョン番号の桁数は多いか少なくてもかまいません。[0-9.]*
必要な数のポイントまたは数字を一致させるために使用されます。 (.
括弧内にある場合は特殊文字ではありません。)より正確には、[0-9.]*
点と数字の可能な最長の順序と一致するため、すべて一致します。[0-9][0-9.]*
最初に1つ以上の数字を強制するには、このオプションを使用します。
sed 's:VERSION=[0-9][0-9.]*:VERSION=5.6.10:g'