「123 var1=test1 var2=test2 456」から「var1=test1」を削除しようとしています
何らかの理由で、結果から var2=test2 も削除されます...なぜこれが起こっているのですか?どうすれば修正できますか?
エコー 123 変数 1 = テスト 1 変数 2 = テスト 2 456 | sed "s/var1=.* //g"
結果: 123 456
ありがとうございました!
echo '123 var1=test1 var2=test2 456' | sed -r 's/var1=\S+ //g'
あなたの間違いは.*
、最後のスペースまで一致している貪欲を使用しています。代わりに、私は非スペースを検索します \S
これは、最後のスペース/.* /
までのすべてをキャプチャするためです。代わりに、
sed "s/var1=[^ ]*//g"
それ以降のすべてを削除することはスペース=
ではありません。
。*が貪欲であるために起こっています。最初のスペースで終了する必要があるため、次を使用します。
s/var1=[^ ]* //g
シェルが^に対して何かを実行したい場合に備えて、おそらくそれを一重引用符で囲みます。