使用awk从URL中提取文件

时间:2018-06-24 09:31:28

标签: awk

我有一个包含以下网址的文件

  1. http://10.32.43.211:25280/sherlock/store/pyy/debug? q =彪马+鞋子+短裤+男短裤=真&现金=假&密码= 560102

  2. http://10.32.43.211:25280/sherlock/store/poq/debug? q =耐克+鞋+短裤+女短裤=真&现金=假&密码= 560102

我想提取以下内容(使用awk,而不是gawk)     q =彪马短裤男     q =阿迪达斯鞋子短裤男

我需要知道获取后如何用空白替换'+'
    q =耐克+鞋子+短裤+女士

我尝试了

awk -F '?' '{ print $2 }' urls_details, but the printing everything after the ?, 
q=puma+shoes+shorts+men & shorts = true & cash-enable = false & pincode = 560102

 q=addidas+shoes+shorts+men & shorts = true & cash-enable = false & pincode = 560102

q=nike+shoes+shorts+women & shorts = true & cash-enable = false & pincode = 560102

我怎样才能只检索&之前的字段? q =耐克+鞋子+短裤+女士

1 个答案:

答案 0 :(得分:0)

在这种情况下,考虑到您的实际Input_file与所示示例相同,那么下面的内容可能会对您有所帮助。

awk 'match($0,/http:\/\/[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+:[0-9]+\/.*\? /){gsub(/+/," ",$2);print $2}' Input_file

OR(溶液的一种非衬里形式):

awk '
match($0,/http:\/\/[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+:[0-9]+\/.*\? /){
  gsub(/+/," ",$2);
  print $2
}' Input_file

match的{​​{1}}函数中的正则表达式将检查某行是否具有从http到awk的URL(如果匹配),然后打印该行的第二列。