html 태그를 SED 명령으로 바꾸는 방법은 무엇입니까?

html 태그를 SED 명령으로 바꾸는 방법은 무엇입니까?

아래 태그를 새 콘텐츠와 태그 행으로 바꾸려고 합니다. sed 또는 다른 옵션을 사용하여 레이블과 해당 값을 변경하는 방법이 있습니까?

원본 HTML 태그(내부 th>태그):

th> file-109 /th>
th> file-209 /th>

이 HTML 태그를 다음으로 변경합니다.

th>S.No  Name /th>
th>S.No  Name /th>

아래 방법을 시도해 보았지만 효과가 없습니다. 던지기 오류입니다.

sed "s/th>file-1.*/'th>`head -5 file-109 | tail -1`/th>'/g" Diff.html
sed "s/th>file-2.*/'th>`head -5 file-209 | tail -1`/th>'/g" Diff.html

답변1

sed는 /를 선택한 구분 기호로 다양한 문자를 사용할 수 있지만 /는 바꾸려는 문자열에도 나타납니다. 따라서 나는 다음을 선택합니다.

sed 's:th>file-[0-9]+ /th>:th>S.No name /th>:g' yourfile

그러나 이보다 더 복잡한 것을 처리하려면 정규식을 사용하지 말고 HTML을 구문 분석해야 합니다.

답변2

얼마나 강력해야 하는지는 잘 모르겠지만 다음을 sed -e "s/file-[^/ ]*/S.No Name/g" Diff.html사용하여 파일을 직접 편집 해 보십시오.sed -ie

답변3

perl -0777pe '
   s{ (?<=th>\s) file-\d+ (?=\s/th>) }{
      qx/sed -e "4q;d" "$&"/ =~ /.*/;
      $&;
   }xge;
' Diff.html

내가 올바르게 이해했다면 파일의 th> 및 /th> 태그에 포함된 모든 파일 이름을 File-num방금 선택한 파일의 네 번째 줄로 바꾸길 원할 것입니다.

관련 정보