修訂
我假設網址放置到$url
變量規範下載。那麼你可以嘗試像波紋管:
perl -pe 'BEGIN {$url="http://somedomain.org"}
s!(\b(?:url|href)=")([^/]+)(")!$1$url/$2$3!gi' << XXX
<td><a href="testing.htm">LINK</a></td>
<td><a href="http://mydomain.com/testing.htm">LINK</a></td>
<meta http-equiv="Refresh" content="0;URL="home">
XXX
輸出:
<td><a href="http://mymain.org/testing.htm">LINK</a></td>
<td><a href="http://mydomain.com/testing.htm">LINK</a></td>
<meta http-equiv="Refresh" content="0;URL="http://mymain.org/home">
它替換href="$url/..."
或url="$url/..."
所有href="..."
或url="..."
(不區分大小寫)模式如果不...
包含/
字符。
如果輸入的是一個文件,可以直接替換文件中的這些模式:
cat >tfile << XXX
<td><a href="testing.htm">LINK</a></td>
<td><a href="http://mydomain.com/testing.htm">LINK</a></td>
<meta http-equiv="Refresh" content="0;URL="home">
XXX
cat tfile
perl -i -pe 'BEGIN {$url="http://mymain.org"}
s!(\b(?:url|href)=")([^/]+)(")!$1$url/$2$3!gi' tfile
echo "---"
cat tfile
輸出:
<td><a href="testing.htm">LINK</a></td>
<td><a href="http://mydomain.com/testing.htm">LINK</a></td>
<meta http-equiv="Refresh" content="0;URL="home">
---
<td><a href="http://mymain.org/testing.htm">LINK</a></td>
<td><a href="http://mydomain.com/testing.htm">LINK</a></td>
<meta http-equiv="Refresh" content="0;URL="http://mymain.org/home">
謝謝您的回答,但它並沒有真正解決問題。 curlmirror.pl將html下載爲文本,而不僅僅是標籤,其他鏈接如成爲。我需要一種方法讓curlmirror將所有鏈接下載爲絕對路徑或相對路徑 – Zetsukaze 2013-05-15 01:04:57