한 줄씩 읽는 대신 여러 줄로 읽는 방법

한 줄씩 읽는 대신 여러 줄로 읽는 방법

내 코드에서 전체 코드가 해당 줄을 기반으로 하는 경우 해당 줄을 수정할 수 있다는 것을 알았습니다. 예: <p class="example">this is an example Happy Holidays</p>. 그러나 </p>태그가 두 번째 줄에 있으면 코드는 해당 줄을 전달합니다.

줄이 끝나기 전에 특정 태그를 감지하는 가장 좋은 방법은 무엇입니까?

답변1

간단한 대답은 다음과 같습니다.셸을 사용하지 않고 XML 구문 분석. 대신 Perl의 많은 파서 중 하나와 같은 XML 파서를 사용하십시오.XML::파서,XML::단순또는 다른 언어. HTML의 경우,HTML::파서옵션입니다(Perl을 계속 사용하는 경우).

이를 사용하고 싶다면 내장 함수와 루프를 사용하여 실험해 볼 bash수 있습니다 .read

답변2

텍스트 유틸리티는 줄에서 작동합니다(텍스트 줄은 개행 문자로 끝나는 NUL이 아닌 문자의 (너무 길지 않은) 시퀀스입니다). 개행 awk문자가 아닌 다른 것으로 구분된 레코드에 대해 작업하도록 지시할 수 있는 표준 유틸리티입니다.awk기록바꾸다철사.

>예를 들어 다음 을 사용할 수 있습니다.기록분할기. 좋다:

awk -v RS='>' ...

또 다른 방법은 awk레코드 구분 기호(이 이외의 도구용)로 사용하려는 문자를 개행 문자로 바꾸는 것입니다.

... |
  tr '\n>' '>\n' |
  sed ... |
  other-text-utility... |
  tr '\n>' '>\n'

이는 새 레코드를 시작하므로 수정 중인 콘텐츠에 중첩된 HTML 태그가 포함되어 있지 않다고 가정합니다.

그게 교체다

관련 정보