1

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

2 回答 2

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

注意:这适用于以下 URL:

于 2013-04-01T13:52:15.960 回答
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
于 2013-04-01T13:54:14.140 回答