Копировать строку текста из входного в выходной файл при использовании xargs - PullRequest
3 голосов
/ 08 мая 2019

У меня есть рабочий сценарий оболочки, который читает текстовый файл, содержащий URL-адреса, каждый в отдельной строке. URL-адреса считываются из файла параллельно и проверяются на наличие кода состояния, в котором ответ записывается в файл status-codes.csv.

Как я могу записать исходный URL-адрес, на который ссылается url-list.txt, в первый столбец вывода в status-codes.csv?

status-codes.sh

#!/bin/bash
xargs -n1 -P 10 curl -u user:pass -L -o /dev/null --silent --head --write-out '%{url_effective},%{http_code},%{num_redirects}\n' < url-list.txt | tee status-codes.csv

URL-list.txt

http://website-url.com/path-to-page-1
http://website-url.com/path-to-page-2
http://website-url.com/path-to-page-3

status-codes.csv (токовый выход)

http://website-url.com/path-to-page-2,200,1
http://website-url.com/path-to-page-after-any-redirects,200,2
http://website-url.com/404,404,2

status-codes.csv (требуемый выход)

http://website-url.com/path-to-page-2,http://website-url.com/path-to-page-2,200,1
http://website-url.com/path-to-page-1,http://website-url.com/path-to-page-after-any-redirects,200,2
http://website-url.com/path-to-page-3,http://website-url.com/404,404,2

1 Ответ

2 голосов
/ 08 мая 2019

Используйте параметр -I.Например:

xargs -n1 -P 10 -I '{}' curl -u user:pass -L -o /dev/null --silent --head --write-out '{},%{url_effective},%{http_code},%{num_redirects}\n' '{}' < url-list.txt | tee status-codes.csv

man xargs:

-I replace-str Replace вхождения replace-str в исходных аргументах с именами, считанными из стандартного ввода.

...