sedを使用して特殊文字の後の文字列を見つけて置き換える

sedを使用して特殊文字の後の文字列を見つけて置き換える

固有のパラメータを含むURLを含むファイルがあり、その一部にはいくつかのパラメータがあります。すべての文字を変更しようとしています。後ろに他に=

例 URL file-containing-urls.txt:

https://somewebsite.com/some/path/?parameter=value&another=somethingelse

コマンドの例sed:

sed -r '/^\=/!s/=.*$/=somevalue/g' file-containing-urls.txt

これが機能している間は、最初の引数だけを置き換え、他の引数は置き換えません。私の考えではみんな次の文字は=特定の文字列です。私の結果は次のとおりです。

https://somewebsite.com/somepath/?param=mystring  --> Works
https://somewebsite.com/new/path/?param1=mystring&param2=removed  --> Only works for param1

2番目の例では、私の文字列もに送信されますが、最初の値だけを置き換え、残りは無視するようですparam2sed他のすべてのパラメータはビューから削除されます。私はこの問題を解決すると思いましたが、/g常に同じ結果を得ました。ありがとうございます!

ベストアンサー1

$ sed 's/=[^=&]*/=somevalue/g' file
https://somewebsite.com/some/path/?parameter=somevalue&another=somevalue

おすすめ記事