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

时间:2013-04-01 12:53:15

标签: shell awk

我已经在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

2 个答案:

答案 0 :(得分:4)

这是一种方法:

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

注意:这适用于以下网址:

答案 1 :(得分:2)

使用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