Вторая задачка очень даже проста.
Во-первых, для убирания досовского наследия существует утилитка dos2unix.
Если же ее нет, поможет sed 's/\r//g'
А в целом, задачу можно решить так:
Код: Выделить всё
sed -i -n 's/\r//g;H;${g;s/\n\{2,\}/\r/g;s/\n/ /g;s/\r/\n/g;p}' text.txt
-i -- результат работы записывать в исходный файл
-n -- не выводить ничего, кроме того, что мы захотим
s/\r//g -- вышеобозначенное досоукрощение
H -- добавить строку в буфер
${...} -- если последняя строка, выполнить то, что в скобках
g -- текст из буфера в pattern space, грубо говоря, в рабочий регистр.
s/\n\{2,\}/\r/g -- заменяем все концы строк (если их два и более, т.е. конц абзаца) на временный символ, пусть будет \r
s/\n/ /g -- заменяем все оставшиеся концы строк на пробелы
s/\r/\n/g -- вертаем взад концы абзацев
p -- вывод того, что получилось
А вот
первая задачка посложнее будет, с первого взгляда решения не вижу. Будет время, посмотрю второй раз
