Как получить заголовок веб-сайта с помощью команд curl и grep?

Как получить заголовок веб-сайта с помощью команд curl и grep?

Я сдаю свой Linux+ midterm и застрял на вопросе, где мне нужно скопировать раздел head, включая теги, и вывести его в файл. Мой промежуточный экзамен должен быть сдан 5-го числа, поэтому было бы очень полезно, если бы кто-нибудь показал мне правильный код для использования при поиске раздела head и тегов. Я попробовал: curl www.hackthissite.org: grep "<head> > ~/data/public/myfirstname\ mylastname/head.txtно все, что он сказал, когда я cat файл <head>, это , не включает раздел head или тег. Так что мне нужно ввести, чтобы получить правильный вывод в файл?

решение1

Это немного сложнее, чем то, что вы пытаетесь сделать.

Во-первых, в вашей команде есть некоторые синтаксические проблемы. Это curl www.hackthissite.org: grep "<head> > ~/data/public/myfirstname\ mylastname/head.txtдолжно быть:

curl www.hackthissite.org | grep "<head>" > ~/data/public/myfirstname\ mylastname/head.txt

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

Я придумал следующее:

curl www.hackthissite.org > TEMPORARYFILE.txt; grep -A $(($(grep -n "</head>" TEMPORARYFILE.txt | cut -d: -f1) - $(grep -n "<head>" TEMPORARYFILE.txt | cut -d: -f1))) "<head>" TEMPORARYFILE.txt > ~/data/public/myfirstname\ mylastname/head.txt; rm TEMPORARYFILE.txt

Итак, по частям:

grep -n "</head>" TEMPORARYFILE.txt | cut -d: -f1

Это вернет номер строки, где находится закрывающий тег. То же самое относится к grep -n "<head>" TEMPORARYFILE.txt | cut -d: -f1, но для открывающего тега.

Затем у нас есть $(($(grep -n "</head>" TEMPORARYFILE.txt | cut -d: -f1) - $(grep -n "<head>" TEMPORARYFILE.txt | cut -d: -f1))), который должен подсчитать, сколько строк находится между открывающим тегом и закрывающим тегом.

Это используется с -Aопцией grep, которая дает нам контроль над тем, сколько строк после совпадения мы хотим напечатать. Таким образом, он будет искать открывающий тег head и напечатать все строки между ним и закрывающим тегом.

решение2

Используя gawk:

curl -s www.hackthissite.org | awk '/<\<head>/,/<\/head>/ {print}'

Связанный контент