0

「123 var1=test1 var2=test2 456」から「var1=test1」を削除しようとしています

何らかの理由で、結果から var2=test2 も削除されます...なぜこれが起こっているのですか?どうすれば修正できますか?

エコー 123 変数 1 = テスト 1 変数 2 = テスト 2 456 | sed "s/var1=.* //g"

結果: 123 456

ありがとうございました!

4

3 に答える 3

1
echo '123 var1=test1 var2=test2 456' | sed -r 's/var1=\S+ //g'

あなたの間違いは.*、最後のスペースまで一致している貪欲を使用しています。代わりに、私は非スペースを検索します \S

于 2013-03-13T22:22:52.123 に答える
1

これは、最後のスペース/.* /までのすべてをキャプチャするためです。代わりに、

sed "s/var1=[^ ]*//g"

それ以降のすべてを削除することはスペース=ではありません。

于 2013-03-13T22:23:16.367 に答える
0

。*が貪欲であるために起こっています。最初のスペースで終了する必要があるため、次を使用します。

s/var1=[^ ]* //g

シェルが^に対して何かを実行したい場合に備えて、おそらくそれを一重引用符で囲みます。

于 2013-03-13T22:23:14.603 に答える