
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)))
그런 다음 여는 태그와 닫는 태그 사이에 몇 줄이 있는지 계산하는 가 있습니다 .
이는 일치 항목 이후에 인쇄하려는 행 수를 제어할 수 있는 -A
옵션 과 함께 사용됩니다 . grep
따라서 여는 head 태그를 검색하고 이 태그와 닫는 태그 사이의 모든 줄을 인쇄합니다.
답변2
멍청이 사용하기:
curl -s www.hackthissite.org | awk '/<\<head>/,/<\/head>/ {print}'