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>
É claro que isso falhará em determinadas circunstâncias, porque as expressões regulares não são a maneira de analisar o HTML, pois concluiu o SO . Mas resolver com um analisador HTML dedicado não seria mais uma linha única.
Mas, se você tiver certeza de que não haverá conflitos com texto simples de par de coordenadas, poderá até reduzi-lo para isso:
perl -pe '$w=640;$h=480;s!(\d+)%,(\d+)%!int($1*$w/100).",".int($2*$h/100)!ge' map.htm