如何使用sed或awk替换URL中所有参数值为自定义内容
问题原因
你原有命令的正则=[^&]*会匹配=之后所有非&的字符,会把URL中参数分隔符?也匹配进去,直接吞掉了?one部分的前缀,导致输出不符合预期。
实现方案
sed 实现
调整正则,限制=后面的匹配截止到&、?或者行尾即可:
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?one=SOMETHING&two=SOMETHING
awk 实现
同理用全局替换规则即可:
echo "http://sub.domain.com/file.jsp;jsessionid=2e62dbe69850d25bc7c6424ba59db?one=15&two=16" | awk '{gsub(/=[^&?]*/,"=SOMETHING");print}'
内容的提问来源于stack exchange,提问作者rand0m
相关产品推荐
相关产品推荐

