下面的命令会生成一个充满 url 的文件并将其输入到 gnu parallel 中。我希望curlresponse.txt 中的输出也具有原始请求url。如何做呢?
cat urls.txt | parallel -j 5 curl -IL -k {} > curlresponse.txt
所以最终输出的示例(在所有重定向之后)如下所示:
OriginalUrl
HTTP/1.1 200
Server: nginx
Date: Mon, 18 Mar 2019 07:35:11 GMT
Content-Type: text/html
Content-Length: 188
Connection: keep-alive
有时 url 可能会被重定向,因此最终的 http 响应应该是具有原始请求 url 的响应。
答案1
严格来说:
cat urls.txt |
parallel -j 5 echo {}';'curl -IL -k {} '|' perl -ne '/^HTTP.* 200/ .. 0 and print' > curlresponse.txt
但对于这样的情况,我通常更喜欢--tag
在每一行前面添加输入:
cat urls.txt |
parallel -j 5 --tag curl -IL -k {} '|' perl -ne '/^HTTP.* 200/ .. 0 and print' > curlresponse.txt
它通常使进一步的处理变得更容易。