在curl输出中计算URL列表的模式

时间:2017-07-21 17:03:04

标签: bash curl

如何在curl中为bash输出中的某个网址列表计算模式的次数?

例如,如果url.txt中的网址为:

xy.com/test.php 
xy.com/test2.php
xy.com/test3.php

并且test.phptest2.php都返回:

{"error":null,"result":true}

我希望计算响应{"error":null,"result":true}发生的次数,当我执行命令时,得到这个:

$ curl -i url.txt ....
...
...
Matched result: 2

2 个答案:

答案 0 :(得分:3)

如果我正确理解您的问题,您希望使用url.txtcurl文件(每行一个)获取所有网址,并计算{{1}的次数}字符串出现。

你可以这样做:

{"error":null,"result":true}

我们将$ <url.txt xargs -n1 curl -s -i | grep -F '{"error":null,"result":true}' -c 2 发送到url.txt(假设网址被正确引用,没有空格),一次只调用xargs一个网址(由于curl选项) 。来自-n1的{​​{1}}的进度输出被curl静音,而-s告诉-c输出计数而非匹配,而grep仅查找给定的固定字符串(不是模式匹配)。

答案 1 :(得分:1)

使用命令替换,它看起来像这样:

curl -i $(cat url.txt)|grep -c '{"error":null,"result":true}'

将输出管道输出到grep -c使得grep将返回您要查找的字符串匹配的数字。