Лого на страниците (малко).

Заглавна страница > Четива > Четива за глотометрията > cream в режим „expert“ > Редът завършва с ^M

 

Александър Иванов

cream в режим „expert“

Редът завършва с ^M

За маркиране на края на реда в различни операционни системи се използват различни символи. В Linux (и във всички подобни на UNIX системи) управляващият символ за край на реда е с код номер 10 (LF); в по-старите версии на операционната система на компютрите Apple/Macintosh се използваше код 13 (CR), в OS X, която е подобна на UNIX, вече се използва код 10 (LF); в Windows/DOS се използва комбинация от два символа — код 13 (CR) и след него код 10 (LF). Ако всичко това е ново и озадачаващо за вас, сигурно ще е полезно да прочетете Текстов файл, бинарен файл.

Ако вие работите в Linux или с OS X и някой ви е изпратил текстов файл, правен във Windows, възможно е в края на реда да виждате ^M, обикновено оцветено различно от текста. Това е кодът 13 (m е тринадесетата буква от английската азбука), който се възприема като символ в текста преди код 10, който е „законният“ знак за край на реда.

Имате няколко възможности.

Първо, може да „обясните“ на cream с какъв текст работите. Изберете от менюто на cream Format > File format… и в отворения диалогов прозорец изберете клавиша DOS/Windows. Символът ^M ще се скрие, но cream ще продължи да записва файла по „уиндоуски“ с два байта за край на реда. За да оправите и това, трябва пак да отворите менюто Format > File format… и в диалоговия прозорец да изберете клавиша UNIX. В този момент текстът се маркира като променен и незаписан. Той наистина е променен — премахнати са символите с код 13 (CR), които виждахме като ^M.

Второ, в режим „експерт“ може направо да изтриете символите с код 13 и да си продължите работата върху текста:

:%s:^M::

Новото тук е как да въведете в полето за търсене управляващия код 13? Това става така: поставете курсора в полето за търсене, натиснете Ctrl+V и без да пускате клавиша Ctrl, въведете m. Това е общият начин за въвеждане на управляващи символи в командния ред. Припомням, че кодът, който въвеждате, съответства на поредния номер на буквата в латинската азбука (нали m е тринадесетата буква).

Има и програми, с които можете да преформатирате текста си извън редактора. В много сглобки на Linux това е програмата flip; така в конзолата

$ flip -u win_file.txt

ще оправи работата и ще преправи края на редовете в текста, както е прието в Linux (-u е мнемоника от UNIX). Ако програмата flip липсва и не я намирате в пакетите, пробвайте с програмките dos2unix и unix2dos — те вършат същата работа.

Накрая може да се използва и системната програма tr (от translate). Тя заменя определени символи в текста с други символи, но може и да изтрива символи с флага -d, например, така

$ cat win_file.txt | tr -d "\r" > lin_file.txt

В примера използвам две много удобни възможности на работата в конзолата: конвейерна обработка и пренасочване на изходния поток данни. Но подробностите ще разяснявам другаде.

Страница: А. И.
Електронна поща
Дата на публикуване: 15.V.2014
Последна редакция: 27.IV.2023
Съобразено с
html5/css3