0

我目前正在将 mediawiki 迁移到 sharepoint。

我已经创建了 wiki 页面的转储,现在正在修改文件以便无缝导入共享点 wiki。

剩下的最后一个问题是页面地址已更改,因此 .html 文件中的链接将不再起作用。

这些链接目前采用以下格式:

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

我想要的格式是:

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

我可以将第一部分 ( ../../../a/b/c/)替换为sed.

我面临的问题在于第二部分(sitename.html)。我想保留sitename但将.html扩展名替换为.aspx. 使用的方法应该适用于不同的站点名称,这样我就不必sed为每个站点名称添加额外的命令。

4

3 回答 3

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
于 2013-06-20T14:19:43.767 回答
1

试试这个 GNU sed,

echo "../../../a/b/c/whateversitename.html" | sed 's#\(../../../a/b/c/\)\(.*\)\.html#http://host/sites/site/wiki/\2.aspx#g'
于 2013-06-20T14:12:01.143 回答
1

一种方法awk

awk -F/ '/\.html/{sub(/\..*/,"",$NF); print "http://host/sites/site/wiki/"$NF".aspx"}' htmlfile
于 2013-06-20T14:09:53.507 回答