Помимо кодировки 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
, тем самым перезаписывая его полностью преобразованной информацией.