要求パラメータ値の削除

要求パラメータ値の削除

以下のように、ファイルの文字列/ URLのリストを検討してください。

$ cat urls.txt
https://example.com/index.php?param1=value1&param2=value2&param3=value3
https://example2.com/home.php?param1=value1&param2=value2

以下のようにパラメータ値を削除する必要があります。

$ cat replaced.txt
https://example.com/index.php?param1=&param2=&param3=
https://example2.com/home.php?param1=&param2=

どうすればいいですか?私は以下を使用していくつかのバリエーションを試しました。sed最終的に間のすべてを置き換えます。=そして&次のように

$ sed -r 's/(=)(.*)(&)/\1\3/g' urls.txt
https://example.com/index.php?param1=&param3=value3
https://example2.com/home.php?param1=&param2=value2

ありがとう

答え1

試してみてください

sed -r 's/(=)([^=]*)(&)/\1\3/g;s/(=)([^=]*)$/\1/'

どこ

  • s/(=)([^=]*)(&)/\1\3/g最初のパターンで交換を実行しparam=valueますが、停止します=(貪欲な一致を避けるため)。
  • s/(=)([^=]*)$/\1/最後のパターンを置き換える

答え2

次のコマンドを試してください

sed  -e "s/[a-z]*[0-9]\&/\&/g" -e "s/[a-z]*[0-9]$//g" filename

出力

https://example.com/index.php?param1=&param2=&param3=
https://example2.com/home.php?param1=&param2

関連情報