как использовать xargs с grep и head для получения первого вхождения каждого сайта? - PullRequest
0 голосов
/ 03 ноября 2019

на каждой странице у меня есть несколько ссылок png Мне нужно получить вторую ссылку png каждой страницы, но эта команда получает только вторую ссылку первой страницы

как я могу решить

echo "linkh\nlfinkh\nlinekh\nli3nkh\n"|xargs  -d '\n' -n1 -I  % curl  -s -N 'https://www.myweb.org/images?q=%'  |  grep -shoP "(http).*?(png|jpg|jpeg)" |sed -n 2p  

эта команда выводит только одну ссылку

Мне нужно вывести четыре ссылки (вторая ссылка каждой страницы)

, пожалуйста, помогите мне

https://www.myweb.org/images?q=linkhпервая страница имеет http: ffeefe.png

https://www.myweb.org/images?q=lfinkh вторая страница имеет http: f43feefe.png

https://www.myweb.org/images?q=linekh третья страница имеет http:f433feefe.png

https://www.myweb.org/images?q=li3nkh на четвертой странице есть http: f435feefe.png

1 Ответ

0 голосов
/ 04 ноября 2019

Ваш код находит только первый результат, потому что вы передаете html всех четырех страниц, объединенных в один экземпляр grep, который затем находит первое совпадение. Вместо этого вы хотите запустить grep четыре раза, по одному разу для каждой страницы. Одним простым способом решения этой проблемы является использование цикла вместо xargs:

echo -e "linkh\nlfinkh\nlinekh\nli3nkh"|
  while read x; do
    curl  -s -N 'https://www.myweb.org/images?q=$x' |
    grep -shoP "(http).*?(png|jpg|jpeg)" |
    sed -n 2p
  done
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...