1.
$(document).ready(function() {
$('div br').replaceWith('\n');
var text = $('div').text().trim();
$('pre').text(text);
});
2.
$(document).ready(function() {
var text = $('div').html().trim().replace("<br>", "\n").replace("<p>", "").replace("</p>", "");
$('pre').text(text);
});
3.
$(document).ready(function() {
var text = $('div').clone().find("br").replaceWith("\n").end().text().trim(); // clone чтоб документ не портить
$('pre').text(text);
});
Почему replaceAll не сработало, не знаю. По идее это reverse - функция для replaceWith и работать должна идентично. В любом случае, лучше не влиять на исходный html и обработку строк делать внутри js. Вариант 3 например