использование awk для извлечения файла из URL - PullRequest
0 голосов
/ 24 июня 2018

У меня есть файл со следующими URL

  1. http://10.32.43.211:25280/sherlock/store/pyy/debug? q = пума + обувь + шорты + мужчины и шорты = true & cash-enable = false &пин-код = 560102

  2. http://10.32.43.211:25280/sherlock/store/poq/debug? q = nike + обувь + шорты + женщины и шорты = true & cash-enable = false и пин-код = 560102

Я хочу извлечь следующее (используя awk, а не gawk) q = мужские шорты puma q = мужские шорты addidas

Мне нужно знать, как заменить знак «+» на пустойпосле получения
q = nike + обувь + шорты + женщины

я пытался

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 = nike + обувь + шорты +женщины

1 Ответ

0 голосов
/ 24 июня 2018

Учитывая, что ваш фактический файл Input_file совпадает с показанными примерами, в этом случае вам могут помочь следующие.

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

ИЛИ (форма решения не с одним вкладышем):

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

Регулярное выражение в match Функция awk проверит, имеет ли строка URL-адрес, начиная с http до ?, если он совпадает, затем напечатает 2-й столбец этой строки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...