2013-06-20 45 views
0

我目前正在將mediawiki遷移到共享點。更改.html文件中鏈接的一部分

我創建了維基頁面的轉儲,現在正在修改文件以便無縫導入到維基百科中。

剩下的最後一個問題是頁面的地址已經改變,所以.html文件中的鏈接將不再工作。

的鏈接是目前在以下格式:

../../../a/b/c/sitename.html 

我想要得到的格式是:

http://host/sites/site/wiki/sitename.aspx 

我可以sed取代第一部分(../../../a/b/c/)。

我面臨的問題在於第二部分(sitename.html)。我想保留sitename,但用.aspx替換.html擴展名。所使用的方法應該適用於不同的網站名稱,這樣我就不必爲每個網站名稱添加一個額外的sed命令。

+0

是否有其他相似外觀的網址,如'../../../ A/B/C /不-A-sitename.html'其中'的.html '後綴需要保持不變? –

回答

1

一種方式與awk

awk -F/ '/\.html/{sub(/\..*/,"",$NF); print "http://host/sites/site/wiki/"$NF".aspx"}' htmlfile 
1

試試這個GNU sed的,

echo "../../../a/b/c/whateversitename.html" | sed 's#\(../../../a/b/c/\)\(.*\)\.html#http://host/sites/site/wiki/\2.aspx#g' 
1

sed可以與多個表情的工作,因此,如果您使用的是一個sed,你只需要添加另一種表達到,而不是另一個sed

[[bash_prompt$]]$ cat log 
../../../a/b/c/sitename.html 
[[bash_prompt$]]$ sed -e 's#../../../a/b/c#http://host/sites/site/wiki#g' \ 
> -e 's#html$#aspx#g' log 
http://host/sites/site/wiki/sitename.aspx 

添加在單個表達

[[bash_prompt$]]$sed -e 's#../.*/\([^.]*\).html#http://host/sites/site/wiki/\1.aspx#g' log 
http://host/sites/site/wiki/sitename.aspx