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