xargs + curl "Ошибка записи тела" (не может сохранить более одного результата в файл) - PullRequest
0 голосов
/ 09 ноября 2019

У меня проблема с xargs и curl.

У меня есть список URL в файле "urls", и мне нужно загрузить это содержимое, ограниченное первыми 9 строками, и сохранить все в один выходной файл (или один файл)за результат - не имеет значения).

xargs -P 4 -n 1 curl < urls | head -n 9 > outputfile

Проблема в том, что только первый результат сохраняется в файл, все остальные выдают ошибку "(23) Failed Writing body". Даже когда я не сохраняю результаты в файл, в консоли возникает ошибка «(23) Failed Writing body».

В итоге: мне нужно загрузить первые 9 строк XXXX URL-адресов из файла и сохранить их водин выходной файл или один файл на URL.

Проблема существует в Cygwin (Windows 10) и MacOs.

1 Ответ

1 голос
/ 09 ноября 2019

Ваш конвейер ограничивает вывод первыми 9 строками xargs вывода. Попробуйте вместо этого.

xargs -P 4 -i sh -c 'curl {} | head -n 9' <urls >outputfile

Это, вероятно, неконтролируемо смешивает выходные строки параллельных выборок. Если вы хотите избежать этого, возможно, посмотрите на GNU parallel. Если это неприемлемо, возможно, запишите каждый в отдельный временный файл, объедините и удалите временные файлы после завершения извлечения.

...