Вы можете использовать это регулярное выражение, которое использует нотацию POSIX,
(page[[:space:]]+([[:digit:]]+))
И заменить его на это,
<a href="#p\2">\1</a>
Попробуйте с помощью этой команды примера,
echo "See page 107" | sed -r 's~(page[[:space:]]+([[:digit:]]+))~<a href="#p\2">\1</a>~g'
Или используйте -E вместо -r (для OS X)
echo "See page 107" | sed -E 's~(page[[:space:]]+([[:digit:]]+))~<a href="#p\2">\1</a>~g'
, что дает этот вывод,
See <a href="#p107">page 107</a>