команда cat и Pipe для запуска не будет принимать два аргумента

Я использовал эту команду:

cat urls.txt | xargs -n 1 -P 10 wget -q

для загрузки текстовых файлов URL-адресов. Это было отлично, когда мой URL-файл был похож:

http://domain1.com/page.html
http://domain2.com/page.html
http://domain3.com/page.html

Однако теперь мне нужно загрузить текстовые файлы URL-адресов и опубликовать данные, например:

--post-data '1=1' http://domain1.com/page.html
--post-data '1=1' http://domain2.com/page.html
--post-data '1=1' http://domain3.com/page.html

При использовании приведенного выше cat, он пытается загрузить URL-адрес, а затем данные сообщения в виде URL-адреса. например в приведенном выше примере он будет загружать http://domain1.com/page.html, а затем попытаться загрузить --post-data 1 = 1, затем http://domain2.com/page.html и т. д. [ ! d3]

В любом случае, чтобы кошка могла отправлять только каждую строку файлов URL?

Обновление: я обнаружил, что добавив escape в пространство, например:

[ f4]

делает его обработанным как один url, но the - кажется, удаляется из аргумента -post-data.

1
задан 23 January 2014 в 06:04

2 ответа

Откройте терминал и запустите:

cat urls.txt | sed "s/[\"\<\>' \t\(\);]/\n/g" | grep "http://" | sort -u | xargs -n 1 -P 10 wget -q
1
ответ дан 24 May 2018 в 12:39

Вам не нужно xargs, вы можете сделать это с помощью простой петли bash. Либо сохраните свои URL-адреса в виде простого списка и добавьте параметры непосредственно в wget:

while IFS= read -r url; do wget --post-data '1=1' "$url"; done < urls.txt

или включите их в файл и передайте их в wget:

while IFS= read -r url; do wget "$url"; done < urls.txt
0
ответ дан 24 May 2018 в 12:39

Другие вопросы по тегам:

Похожие вопросы: