如何解析shell脚本中的URL参数

icnyk63a  于 12个月前  发布在  Shell
关注(0)|答案(2)|浏览(169)

我在python中成功地尝试了同样的方法来解析URL参数,但我想知道是否有一种方法可以在Shell脚本中做到这一点。
比如,我有一个URL值:
http://www.abcdsample.com/listservices?a=1&b=10&c=abcdeeff&d=1663889&listservices=a|b
所需输出:

URL: http://www.abcdsample.com/
Service: listservices
a=1
b=10
c=abcdeeff
d=1663889
listservices=a|b

字符串

fslejnso

fslejnso1#

这里有一个方法:

BEGIN{
    FS="?"
}
{
    url=$1
    sub(/[^/]*$/,"",url)
    print "URL:",url

    sub(/.*[/]/,"",$1)
    print "Service:",$1

    n=split($2,b,/&/)
    for (i=1;i<=n;i++)
        print b[i]
}

字符串
保存为script.awk,然后像awk -f script.awk file一样运行:

URL: http://www.abcdsample.com/
Service: listservices
a=1
b=10
c=abcdeeff
d=1663889
listservices=a|b


注意:这将适用于以下URL:

xpcnnkqh

xpcnnkqh2#

使用GNU awk的一种方法:

$ gawk -F'&' '{
   $0 = gensub(/(^[^/]+[/][/][^/]+[/])([^?]+)[?]/,"\\1\\&\\2\\&","")
   print "URL:",$1
   print "Service:",$2
   for (i=3;i<=NF;i++)
      print $i
}' file
URL: http://www.abcdsample.com/
Service: listservices
a=1
b=10
c=abcdeeff
d=1663889
listservices=a|b

字符串

相关问题