2013-06-20 2 views
0

В настоящее время я переношу медиавики в sharepoint.Изменить часть ссылок в .html файлах

Я создал дамп страниц вики и теперь в процессе изменения файлов для бесшовного импорта в sharepoint wiki.

Последней проблемой является то, что адрес страниц изменился, поэтому ссылки в файлах .html больше не будут работать.

Ссылки в настоящее время в следующем формате:

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

формат я хочу, чтобы добраться до это:

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

я могу заменить первую часть (../../../a/b/c/) с sed.

Проблема, с которой я сталкиваюсь, лежит во второй части (sitename.html). Я хочу сохранить sitename, но замените расширение .html на .aspx. Используемый метод должен применяться для разных имен файлов, поэтому мне не нужно добавлять дополнительную команду sed для каждого имени файла.

+0

Существуют другие аналогичные ищет URL-адреса, такие как '../../../ A/B/C/не-а-sitename.html', где' .html 'Суффикс нужно оставить нетронутым? –

ответ

1

Один из способов с awk:

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

Попробуйте это GNU СЭД,

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