sedを使用して、example = "value"行を含む"case"という文書を変更する必要があります。ここで、valueは2〜3文字の整数を使用できます。たとえば、次のようになります。
example=55
example=777
otherthing=anothervalue
sedを使用して、2つのサンプルラインを次の2つのラインに変更したいと思います。 example=000
使ってみました。
sed -i -e "s/example=*/example=000/g" case
同時に修正しましたが、明らかに動作しません。私が知る必要があるのは、sedが後ろに2〜3文字を取るようにする方法です。=
答え1
*
forのさまざまな意味を混同しています。シェルファイル名拡張子そしてPosix 基本正規表現(BRE
)。
正規表現では、*
先行する文字の数量子なので、=*
ゼロ個以上の発生を意味します=
。 「任意の文字数」が必要な場合はを使用してください.*
。
sed -i -e 's/example=.*/example=000/' case
追加のヒント:
g
文字列は1行に1回しか表示されないため、修飾子を省略できます。- もしあなたならいいえまた、一致させるには、
another_example=value
これを使用して行の先頭に^example=.*
あることを確認してください。example
.
[0-9]
または、[[:digit:]]]
文字は使用できず、数字のみを一致させることができます。*
代わりに数量子を使用できます+
。これは次のことを意味します。1文字以上(GNUで\+
通常のようにエスケープまたは作成する必要があります)。BRE
sed
\{1,\}
sed
2〜3文字だけを一致させるにはできます。
sed -i -e 's/example=.\{2,3\}/example=000/' case
または、拡張正規表現(ERE
)(sed -E
)を使用します。
sed -i -E -e 's/example=.{2,3}/example=000/' case