한 파일의 이미지 URL을 다른 파일에서 찾아 바꾸기

한 파일의 이미지 URL을 다른 파일에서 찾아 바꾸기

텍스트 파일의 URL 목록에서 HTML 파일의 모든 이미지 소스 URL을 바꾸려고 합니다.

파일 1.html

<td class="MetadataRes" width="380px" colspan="2" style="border-top: 1px #336699 solid;">
  <a olv_link="/Default/Scripting/ArticleWin.asp?From=Search&amp;Key=Orange/2011/03/27/129/Ad12911.xml&amp;CollName=Orange_APA3&amp;DOCID=2485870&amp;PageLabelPrint=H2&amp;Skin=%4f%72%61%6e%67%65%43%6f%75%6e%74%79%52%65%67%69%73%74%65%72&amp;AW=%31%34%31%32%36%32%38%32%31%34%35%30%32&amp;sPublication=%4f%72%61%6e%67%65&amp;sScopeID=%44%52&amp;SECTION=%43%6c%61%73%73%69%66%69%65%64&amp;sSorting=%53%63%6f%72%65%2c%64%65%73%63&amp;sQuery=%72%65%67%69%73%74%65%72%65%64%20%6e%75%72%73%65%20%3c%4f%52%3e%20%52%4e&amp;rEntityType=&amp;sSearchInAll=%66%61%6c%73%65&amp;sDateFrom=%25%33%30%25%33%35%25%32%66%25%33%30%25%33%31%25%32%66%25%33%32%25%33%30%25%33%31%25%33%30&amp;sDateTo=%25%33%30%25%33%35%25%32%66%25%33%33%25%33%31%25%32%66%25%33%32%25%33%30%25%33%31%25%33%31&amp;dc:creator=&amp;PageLabel=&amp;dc:publisher=&amp;RefineQueryView=&amp;StartFrom=%30" href="javascript:void(0);" onclick="window.top.sys.openArtWin(this.getAttribute('Olv_link'))">
    <img src="/Repository/GetImage.dll?baseHref=Orange/2011/03/27&amp;EntityID=Ad12911&amp;imgExtension=">
  </a>
</td>...

*여기에서 전체 문서를 확인하세요:http://pastebin.com/XbwtZJPa

파일 2.txt

/getimage.dll?path=Orange/2011/03/27/129/Img/Ad1291103.gif
/getimage.dll?path=Orange/2011/03/20/133/Img/Ad1330402.gif
/getimage.dll?path=Orange/2010/08/29/137/Img/Ad1372408.gif

다음을 얻기 위해 위 HTML 파일의 이미지 URL을 URL 파일에 나열된 첫 번째 URL로 바꾸고 싶습니다.

결과.html

<td class="MetadataRes" width="380px" colspan="2" style="border-top: 1px #336699 solid;">
  <a olv_link="/Default/Scripting/ArticleWin.asp?From=Search&amp;Key=Orange/2011/03/27/129/Ad12911.xml&amp;CollName=Orange_APA3&amp;DOCID=2485870&amp;PageLabelPrint=H2&amp;Skin=%4f%72%61%6e%67%65%43%6f%75%6e%74%79%52%65%67%69%73%74%65%72&amp;AW=%31%34%31%32%36%32%38%32%31%34%35%30%32&amp;sPublication=%4f%72%61%6e%67%65&amp;sScopeID=%44%52&amp;SECTION=%43%6c%61%73%73%69%66%69%65%64&amp;sSorting=%53%63%6f%72%65%2c%64%65%73%63&amp;sQuery=%72%65%67%69%73%74%65%72%65%64%20%6e%75%72%73%65%20%3c%4f%52%3e%20%52%4e&amp;rEntityType=&amp;sSearchInAll=%66%61%6c%73%65&amp;sDateFrom=%25%33%30%25%33%35%25%32%66%25%33%30%25%33%31%25%32%66%25%33%32%25%33%30%25%33%31%25%33%30&amp;sDateTo=%25%33%30%25%33%35%25%32%66%25%33%33%25%33%31%25%32%66%25%33%32%25%33%30%25%33%31%25%33%31&amp;dc:creator=&amp;PageLabel=&amp;dc:publisher=&amp;RefineQueryView=&amp;StartFrom=%30" href="javascript:void(0);" onclick="window.top.sys.openArtWin(this.getAttribute('Olv_link'))">
    <img src="/Repository/getimage.dll?path=Orange/2011/03/27/129/Img/Ad1291103.gif">
  </a>
</td>...

이를 수행하는 데 권장되는 쉘 명령이 있습니까? 10.9를 실행하는 Mac에서 다음 sed 명령을 고려했지만 오류가 발생했습니다.

$ gsed -e 's/.*SRC="\/Repository\([^"]*\)".*/\1/p{r File1.html' -e 'd}' File2.txt

답변1

File2.txt에 올바른 URL을 식별하기 위해 고유한 문자열을 포함한다고 가정하면 EntityID이는 예제에만 적용되는 것이 아닙니다.

sed '\_^/getimage.dll.*gif$_{H;d}
  G;s/<img src="[^"]*EntityID=\([^&]*\)&[^"]*"\(.*\)\n\(\/getimage[^\n]*\1[^.]*.gif\).*/<img src="\3"/;s/\n.*//' File2.txt File1.html

필요한 경우 설명을 요청하세요.

관련 정보