
나는 대체 솔루션을 원한다이 jQuery 해킹, 바퀴를 조금 재창조해 보세요. 기본 *ix 도구를 사용하여 한 줄짜리 도구로 이 작업을 수행할 수 있다고 확신합니다. 훨씬 쉽고 간단한 방법은 px가 추가된 모든 숫자를 찾고 일부 - \d+px
일치를 찾은 다음 \d
상수로 곱하지만 실패합니다. 앞에 숫자가 추가되지 않은 경우에만 일치하고 [^\d]\d+px
대체/곱셈을 수행합니다.
가장 간단하고 가장 우아한 솔루션이 승리합니다. 일치-곱하기-대체를 어떻게 수행할 수 있습니까?
나는 Vim을 사용하지만 새로운 아이디어에 열려있습니다.
답변1
bash-4.2$ cat map.htm
<map name="world">
<area shape="rect" coords="0%,0%,32%,32%" >
<area shape="rect" coords="8%,40%,50%,80%" >
<area shape="rect" coords="56%,4%,84%,18%" >
<area shape="rect" coords="74%,20%,90%,40%" >
<area shape="rect" coords="70%,42%,96%,62%" >
<area shape="rect" coords="0%,74%,70%,95%" >
</map>
bash-4.2$ perl -pe '$w=640;$h=480;s!(\d+)%,(\d+)%,(\d+)%,(\d+)%!($1*$w/100).",".($2*$h/100).",".($3*$w/100).",".($4*$h/100)!ge' map.htm
<map name="world">
<area shape="rect" coords="0,0,204.8,153.6" >
<area shape="rect" coords="51.2,192,320,384" >
<area shape="rect" coords="358.4,19.2,537.6,86.4" >
<area shape="rect" coords="473.6,96,576,192" >
<area shape="rect" coords="448,201.6,614.4,297.6" >
<area shape="rect" coords="0,355.2,448,456" >
</map>
물론 정규식은 HTML을 구문 분석하는 방법이 아니기 때문에 특정 상황에서는 실패합니다.SO에 결론. 그러나 전용 HTML 파서를 사용하여 해결하는 것은 더 이상 한 줄로 해결되지 않습니다.
그러나 좌표 쌍으로 보이는 일반 텍스트와 충돌이 없을 것이라고 확신한다면 다음과 같이 줄일 수도 있습니다.
perl -pe '$w=640;$h=480;s!(\d+)%,(\d+)%!int($1*$w/100).",".int($2*$h/100)!ge' map.htm