删除请求参数值

删除请求参数值

考虑文件中的字符串/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

相关内容