Убрать DOS'овские переводы строк

Если открыть в Midnight Commander'е текстовый файл, отредактированный средствами DOS, то в глаза сразу бросаются черные квадратики со знаками ^М в конце строк. Довольно неприятное зрелище, обусловленное тем, что в Unix для обозначения перехода на новую строку используется один символ — \n (он же 0x0A, он же перевод строки, он же десятичное число 10), а в DOS добавляется еще один — \r, (он же 0x0D, он же возврат каретки, он же десятичное 13).

Два символа удобно было использовать во времена матричных принтеров. Сейчас они давно канули в лету, а упразднить лишний байт в текстах так никто и не удосужился. Надо полагать, из соображений «обратной совместимости», а то вдруг какой-нибудь любитель старины, не обновлявший систему с 1985 года, заявится в службу поддержки M$, заявит, что у него принтер печатает лесенкой и потребует денежную компенсацию. (Речь, конечно, не о нашем Markony, использующем в некоторых проектах DOS, таким людям техподдержка не нужна).

Однако что-то я отвлекся. Хотел ведь написать-то всего лишь о том, как эти буковки ^M из текста вывести. Вот один из способов, только что опубликованный на commandlinefu.com:

$ sed 's/^M$//' input.txt > output.txt
  • +8
  • 14 февраля 2011, 08:55
  • yababay

Комментарии (3)

RSS свернуть / развернуть
+
0
еще есть команды dos2unix и unix2dos
avatar

Sergei_T

  • 15 февраля 2011, 09:35
+
0
В Слаке нетути их
avatar

yababay

  • 15 февраля 2011, 10:13
+
0
Да-а! Красиво! А я от переходов из среды в среду программирования
уже придумал свой «язык»: 3DpaBcTByuTe TOBApuwu !
Перекодировать могу, но ЗАБОДАЛСЯ…
avatar

Markony

  • 16 февраля 2011, 09:49

Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.