如何使用“sed”或“awk”替换url参数查询字符串
Posted
技术标签:
【中文标题】如何使用“sed”或“awk”替换url参数查询字符串【英文标题】:How to use "sed" or "awk" to replace url parameters query string 【发布时间】:2022-01-05 10:33:46 【问题描述】:我试图用任何 url 的自定义值替换查询字符串。但它没有正确解析它。
echo "http://sub.domain.com/file.jsp;jsessionid=2e62dbe69850d25bc7c6424ba59db?one=15&two=16" | sed -e "s!=[^&]*!=SOMETHING!g"
http://sub.domain.com/file.jsp;jsessionid=SOMETHING&two=SOMETHING
但我想要这样的结果
http://sub.domain.com/file.jsp;jsessionid=SOMETHING?one=SOMETHING&two=SOMETHING
有什么方法可以使用sed
或awk
【问题讨论】:
您还想在括号表达式中排除?
:[^&?]
。
【参考方案1】:
试试这个:
#!/bin/bash
url="http://sub.domain.com/file.jsp;jsessionid=2e62dbe69850d25bc7c6424ba59db?one=15&two=16"
echo "ORIGINAL: $url"
echo "NEW: $url" | sed -e 's#\(.*jsessionid=\).*\(?one=\).*\(&two=\).*$#\1SOMETHING1\2SOMETHING2\3SOMETHING3#'
结果:
ORIGINAL: http://sub.domain.com/file.jsp;jsessionid=2e62dbe69850d25bc7c6424ba59db?one=15&two=16
NEW: http://sub.domain.com/file.jsp;jsessionid=SOMETHING1?one=SOMETHING2&two=SOMETHING3
我使用的方法是保留你想要的一切,并用你想要的价值替换你不想要的东西。因此,将 SOMETHING1-2-3 替换为您想要使用的任何内容。
它确实使它更长但更容易理解,恕我直言。
【讨论】:
【参考方案2】:使用sed
$ sed 's/=[^?\|&]*/=SOMETHING/g' input_file
http://sub.domain.com/file.jsp;jsessionid=SOMETHING?one=SOMETHING&two=SOMETHING
【讨论】:
以上是关于如何使用“sed”或“awk”替换url参数查询字符串的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 sed 或 awk 命令用变量(变量保存 Unix 脚本)查找和替换文本
如何使用 sed/awk 或其他工具辅助查找和替换 12GB 的颠覆转储文件
如何在 sed 和 awk(和 perl)中搜索和替换任意文字字符串