깨진 HTML 태그를 찾는 방법은 무엇입니까?

깨진 HTML 태그를 찾는 방법은 무엇입니까?

모든 HTML 파일을 살펴보고 예제 등과 같은 잘못된 태그가 있는지 확인하고 싶습니다. 이것이 HTML 파일에서 어떤 태그가 닫히지 않았는지 확인하고 싶은 것입니다 <br>.<hr>

for htmlFile in `ls -f *.html ` ; do
        if `cat $htmlFile | grep -inE "\<br\>"` ; then
           echo "In file $htmlFile there are errors on the following lines: "  >> ~/Desktop/$1_errors.txt
           cat $htmlFile | grep -in "<br>"| cut -d ":" -f1 >> ~/Desktop/$1_errors.txt
           echo "----------------------------------------" >> ~/Desktop/$1_errors.txt
       fi
done

하지만 오류가 발생하고 그것이 내 정규식인 것 같습니다.

./script.sh: line 14: 10:<BR: command not found

이것은 내가받는 오류 중 하나입니다 :)

답변1

쉘 구문의 오류를 수정하더라도브라얌의 답변올바르게 식별되면안 돼요이것이 실제로 작동하도록 하십시오. 기껏해야 저지르게 될 실수를 잡을 수는 있지만, 깨지고 있다는 것을 눈치채지 못할 수도 있는 종류의 손상을 깨뜨리는 태그를 안정적으로 찾는 grep을 얻을 수는 없습니다.

이를 제대로 수행하려면 HTML 태그를 실제로 구문 분석하고 이해할 수 있는 것을 사용해야 합니다. 태그 구문 문제를 지적할 수 있는 HTML 유효성 검사 도구가 많이 있습니다. 먼저 확인해야 할 가장 일반적인 상황 중 하나는 입니다 tidy. 특히 다음 플래그를 사용하여 파일에서 실행해 보세요.

 -errors, -e         show only errors and warnings

이는 문서 유형에 맞게 닫히지 않는 콘텐츠 등 깨진 탭이 있는 위치를 알려줍니다.

tidy 외에도 HTML 구문 검사를 위한 다른 많은 옵션이 있습니다. 사용W3C 검증자좋은 것입니다. 당신이 무엇을 하든 - 컴퓨터의 신을 위험에 빠뜨리세요불과 유황이 너희 위에 부어지느니라—패턴 일치를 위한 grep과 같은 html 구문을 구문 분석하기 위해 정규식을 사용하지 마십시오.

답변2

문제는 다음 줄에 있습니다.

if `cat $htmlFile | grep -inE "\<br\>"` ; then

이는 쉘에 다음을 알려줍니다.

  • 고양이 파일,
  • 그것을 구문 분석하고 <br>태그와 일치하는 줄을 찾으십시오.
  • 실행 출력

문제는 마지막 단계입니다. 명령의 출력을 실행하지 말고 테스트해야 합니다.

if grep -inEq "\<br\>" $htmlFile ; then

물론 HTML을 구문 분석하려면 정규 표현식이 아닌 실제 구문 분석기를 사용해야 합니다.

관련 정보