컬 및 grep 명령을 사용하여 웹 사이트의 헤드 부분을 크롤링하는 방법은 무엇입니까?

컬 및 grep 명령을 사용하여 웹 사이트의 헤드 부분을 크롤링하는 방법은 무엇입니까?

Linux+ 중간고사 시험을 치르고 있는데 태그가 포함된 헤더 섹션을 복사하여 파일로 출력해야 하는 문제를 발견했습니다. 내 중간고사는 5일에 마감되므로 누군가가 헤더 섹션과 태그를 찾을 때 사용할 올바른 코드를 보여주면 정말 도움이 될 것입니다. 나는 시도했지만 파일을 고양이하면 헤더나 태그가 포함되어 있지 않다고 curl www.hackthissite.org: grep "<head> > ~/data/public/myfirstname\ mylastname/head.txt말합니다 . <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)))그런 다음 시작 태그와 종료 태그 사이에 몇 줄이 있는지 계산하는 가 있습니다 .

-Agrep이는 일치 항목이 인쇄된 후 줄 수를 제어할 수 있는 옵션과 함께 사용됩니다 . 따라서 시작 헤더 태그를 검색하고 해당 태그와 닫는 태그 사이의 모든 줄을 인쇄합니다.

답변2

다이다이를 사용하세요:

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

관련 정보