Как отобразить только 1-ю строку из вывода команды 'curl'?
Я пытаюсь получить только первую строчку curl
вывод команды. (Извините, если это сбивает с толку)
Допустим, например, я бегу просто:
# curl http://localhost
<!-- This is the hidden line i want to grab. -->
<!DOCTYPE html>
<html>
<head>
..
..
Что делать, если я хочу получить самую первую строку вывода, а именно:
<!-- This is the hidden line i want to grab. -->
Я пробовал такие вещи, но пока не повезло:
# curl http://localhost | head -n 1
# curl http://localhost | sed -n '1!p'
.. и т. д. Все дает мне мусор выводов, как это:
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0<!-- This is the hidden line i want to grab. -->
0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0
curl: (23) Failed writing body (173 != 1763)
Это не результат, как ожидалось, как указано выше:
<!-- This is the hidden line i want to grab. -->
Любые эксперты здесь, пожалуйста =(
3 ответа
Этот так называемый мусорный вывод - это, в основном, индикатор прогресса во время операции загрузки данных. Вы можете игнорировать это, так как по умолчанию он входит в стандартный поток ошибок, который игнорируется, поэтому в стандартный вывод выводится только соответствующая часть.
Вот тест:
$ curl http://example.com/ | head -n1 > example.html
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 1270 100 1270 0 0 112k 0 --:--:-- --:--:-- --:--:-- 124k
(23) Failed writing body
$ cat example.html
<!doctype html>
Если вы все еще хотите заставить его замолчать, добавьте -s
параметр для тихого режима или перенаправления стандартного потока ошибок в /dev/null
, например:
$ curl -s http://example.com/ 2> /dev/null | head -n1
<!doctype html>
Или используя подстановку команд:
head -n1 <(curl -s http://example.com/ 2> /dev/null)
Вы также можете использовать AWK для печати первой строки вывода.
Пример:
$ curl -skI -XGET 'http://example.com' | awk 'NR==1'
HTTP/1.1 200 OK
Я отвечу, даже если это старая тема: вместо того, чтобы обрезать вывод завитка, вы можете попробовать
$ curl http://localhost -o localhost.txt
$ head -n 1 localhost.txt