【问题标题】:How to use "sed" or "awk" to replace url parameters query string如何使用“sed”或“awk”替换url参数查询字符串
【发布时间】: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

有什么方法可以使用sedawk

【问题讨论】:

  • 您还想在括号表达式中排除?[^&?]

标签: regex bash awk sed cut


【解决方案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
    

    【讨论】:

      猜你喜欢
      • 2010-12-07
      • 2017-02-08
      • 2020-02-18
      • 2019-08-07
      • 2015-01-13
      • 2021-12-24
      相关资源
      最近更新 更多