#linux #bash #unix #terminal #grep
#linux #bash #unix #терминал #grep
Вопрос:
$ wget --output-document=/dev/null http://website.com/file.jpg
Resolving speedtest.sea01.softlayer.com... 67.228.112.250
Connecting to speedtest.sea01.softlayer.com|67.228.112.250|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 1986284 (1.9M) [image/jpeg]
Saving to: `/dev/null'
2011-10-02 22:38:04 (337 KB/s) - `/dev/null' saved [1986284/1986284]
Все работает выше, но я хотел бы знать, как сохранить последнюю строку в переменной ИЛИ передать ее через GREP -> /((. ))/
(Я пытаюсь проанализировать среднее значение KB / s)
Комментарии:
1. Почему бы вам не использовать реальную программу тестирования скорости вместо
wget
?2. Что вы получите, если передадите ее
tail -1
?3. @Borealid: Можете ли вы предложить реальную программу тестирования скорости?
4. @Gabe
ab
Инструмент будет служить. Если вы проводите сквозное тестирование, я обычно используюiperf
, что замечательно.
Ответ №1:
Вы можете перенаправить вывод команды. Например:
$ wget --output-document=/dev/null http://website.com/file.jpg 2>amp;1 | tee /tmp/somefile
$ tail -n 1 /tmp/somefile
Комментарии:
1. Или вы можете использовать
-o
option вместо перенаправления:wget --output-document=/dev/null -o /tmp/somefile
Ответ №2:
Если у вас установлен apache, вы можете использовать Apache HTTP server benchmarking tool:
ab -n1 http://website.com/file.jpg | grep -F 'Transfer rate:'
вы получаете вывод, подобный:
Transfer rate: 1722.38 [Kbytes/sec] received
Ответ №3:
wget -O /dev/null http://website.com/file.jpg 2>amp;1 |
sed -n '%/dev/null%!d;s/.*(//;s/).*//p'
В моей системе конечная строка вывода пуста, иначе sed
адресация была бы проще. Это доступно в Ubuntu из коробки; если ваш sed
отличается, вам может потребоваться немного адаптировать сценарий.
( grep -o '(.*)'
Сначала я попробовал с, но в выводе ранее в скобках был другой текст wget
.)
Комментарии:
1. В качестве запоздалого отступления,
curl
как правило, более универсален и удобен для написания сценариев. Может быть, попробоватьvariable=$(curl -S -o /dev/null -w '%{speed_download}' http://url.example.net/file.jpg)