Как отобразить только 1-ю строку из вывода команды 'curl'?

3801
夏期劇場

Я пытаюсь получить только первую строку 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. --> 

Любые эксперты здесь, пожалуйста = (

2
Какой вид мусора выходной? Это: `curl -s http://example.com/ | head -n1` должен работать правильно, если ваш вывод не сжат. kenorb 8 лет назад 0
Отредактировал вопрос, чтобы вы знали, что означает «мусорная продукция». Благодарю. 夏期劇場 8 лет назад 0
Просто добавьте параметр `-s`, чтобы отключить любой вывод прогресса (мусор). Это все еще идет в stderr, поэтому он не будет сохранен в файл, если вы перенаправите его куда-нибудь. kenorb 8 лет назад 1

1 ответ на вопрос

4
kenorb

Этот так называемый мусорный вывод является в основном индикатором прогресса во время операции загрузки данных. Вы можете игнорировать это, так как по умолчанию он входит в стандартный поток ошибок, который игнорируется, поэтому в стандартный вывод выводится только соответствующая часть .

Вот тест:

$ 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) 

Похожие вопросы