Преобразование текстовых файлов Windows в UNIX (KOI8-R)

Помимо кодировки CP1251, текстовые файлы Windows отличаются от файлов в различных UNIX-подобных окончанием строки — в последних он один — '\n', а в детище M$ '\r\n', в результате чего они кривовато выглядят в консольных текстовых редакторах ('\r' выглядит как ^M). Итак, задача: убрать все '\r' (^M) и преобразовать кодировку из CP1251 во что-нибудь более человечное (KOI8-R или UTF-8).

Решение

$ tr -d "\r" < file > file.new
$ iconv -f cp1251 -t koi8-r  file.new > file

Пояснения

  • первая команда удаляет все символы '\r' в file, вывод направляется в file.new;
  • вторая команда преобразует кодировку из CP1251 в KOI8-R (вместо KOI8-R можно и UTF-8 подставить ;)), и записывает вывод в file, тем самым перезаписывая его полностью преобразованной информацией.