Кажется, это довольно близко:
sed '/^$/! {:a;N;s/\(.\{75\}[^\n]*\)\n\(.\{75\}\)/\1 \2/;ta}' ebook.txt
Он не получает последнюю строку абзаца, если он короче 75 символов.
Edit:
Эта версия должна делать все это:
sed '/^.\{0,74\}$/ b; :a;N;s/\(.\{75\}[^\n]*\)\n\(.\{75\}\)/\1 \2/;ta; s/\n/ /g' ebook.txt
Редактировать 2:
Если вы хотите переупорядочить границы слов / предложений на другой ширине (здесь 65, но выберите любое значение), чтобы предотвратить разрыв слов на полях (или длинные строки обрезаться):
sed 's/^.\{0,74\}$/&\n/' ebook.txt | fmt -w 65 | sed '/^$;s/\n//}'
Чтобы перейти с конца строки в DOS на Unix, просто добавьте dos2unix
в начало любого из вышеперечисленных каналов:
dos2unix < ebook.txt | sed '/^.\{0,74\}$/ b; :a;N;s/\(.\{75\}[^\n]*\)\n\(.\{75\}\)/\1 \2/;ta; s/\n/ /g'