2017-12-12 1 views
0

나는 bash 스크립트에서 편집하고 싶은 html 문서를 가지고있다. 각 가지의 다른 버전에 대한 링크와 함께 두 개의 <td>를 보관 각 <tr>알파벳 순서로 파일에 여러 줄을 추가하는 Bash 스크립트

<table> 
    <tr> 
     <td><a href="XXXX-1.example.com">XXXX</a></td> 
     <td><a href="XXXX-2.example.com">XXXX</a></td> 
    </tr> 
    <tr> 
     <td><a href="YYYY-1.example.com">YYYY</a></td> 
     <td><a href="YYYY-2.example.com">YYYY</a></td> 
    </tr> 
</table> 

다음 HMTL 파일은 다음과 같은 형식 항목의 테이블이 있습니다.

내가해야 할 일은 bash 스크립트에서 XXXX가 무엇이든 올바른 알파벳 순서로 새 <tr> 블록을 테이블에 추가하는 것입니다.

이미 sed 명령을 통해 여러 파일에 항목을 추가하는 큰 스크립트가 있지만이 파일은 사전 순으로 있어야하며이 접근 방법을 잘 모릅니다.

+0

왜 당신은 정확하게 bash에 묶여 있습니까? 그것을하는 엉덩이 방법에있는 고통 같이 소리가 난다. –

+3

이것은 XML 또는 HTML을 구문 분석하도록 설계된 도구를 사용하여 DOM이 있거나 원숭이에게 적합하도록 설계된 도구로 비교적 간단합니다. bash는 그 도구가 아닙니다. 이 스크립트의 범위가 커짐에 따라 도구로 만들려고하면 고통을 겪을 것입니다. – JNevill

답변

1

sed html을 이해하지 못합니다. 예를 xsh를 들어, HTML 인식 도구를 사용하여, 래퍼 XML::LibXML 주위 :

open :F html file.html ; 
my $new = "JJJJ" ; 
my $after = //table/tr[xsh:strmax($new, preceding-sibling::tr/td/a) = $new][last()] ; 

my $tr := insert element tr before $after ; 
insert chunk {" 
    <td><a href='$new-1.example.com'>$new</a></td> 
    <td><a href='$new-2.example.com'>$new</a></td> 
"} into $tr ; 

주 새가 삽입되는 후 tr에 위치는 XPath : 그것은 마지막 tr 등의이 모든에서 최대 문자열 이전 형제 인 tr의 새 문자열과 새 문자열이 더한 것입니다. 다음 tr 문자열은 새로운 문자열보다 크기 때문에 maxstr이 변경됩니다. (코드는 새 문자열이 먼저 오면 대문자를 처리하지 않습니다.이 경우 $ after는 비어 있습니다.)

관련 문제