URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID1
Нить номер: 41671
[ Назад ]

Исходное сообщение
"Запятая в текстовом файле"

Отправлено A Clockwork Orange , 15-Мрт-04 16:42 
В текстовом файле на FreeBSD заменил точку на запятую программой sed, просмотраиваю результать все отлично, везде запятые, сливаю файл на Windows в файле точки7!!!

Содержание

Сообщения в этом обсуждении
"Запятая в текстовом файле"
Отправлено A Clockwork Orange , 15-Мрт-04 16:44 
Вот черт, а если просматриваю vi то одни точки и стоит знат ^M блин чего делать ?

"Запятая в текстовом файле"
Отправлено denn , 15-Мрт-04 16:55 
>Вот черт, а если просматриваю vi то одни точки и стоит знат
>^M блин чего делать ?
cat file0|col -p >file1 - удалит виндовые ^M


"Запятая в текстовом файле"
Отправлено lavr , 15-Мрт-04 17:12 
>Вот черт, а если просматриваю vi то одни точки и стоит знат
>^M блин чего делать ?

мб не тот символ и не на то заменял или код символа был неверно набран?

Потому как имеем точку и запятую в первой половине ASCII:

[unix1]~ > uname -r
4.8-RELEASE
[unix1]~ > echo $TERM
xterm
[unix1]~ > echo $LANG
ru_RU.KOI8-R
[unix1]~ > echo ",,," | recode -kw - -
,,,
[unix1]~ >

Что у тебя могло произойти: например ты зашел на freebsd-server из под
неверно настроенной в Windows терминалки.

В таких случаях лучше в VI сделать скрипт замены и затем его запустить.

Пример:

[unix1]~ > cat prob
........................................
........................................
[unix1]~ > sed -e "s/./,/g" prob
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
[unix1]~ >

допустим нам нужно было сделать правки в файле который был создан
в MSDOS/Windows и в нем конец строки интерпретируется как два символа:
0xd 0xa (\r\n)

[unix1]~ > cat prob
........................................
<skipped>
........................................
[unix1]~ >

проще всего увидеть используя hd (man hd):

[unix1]~ > hd -c prob
...
<skip>
000001f0  2e 2e 2e 2e 2e 2e 0d 0a  2e 2e 2e 2e 2e 2e 2e 2e  |................|
00001f0   .   .   .   .   .   .  \r  \n   .   .   .   .   .   .   .   .
00000200  2e 2e 2e 2e 2e 2e 2e 2e  2e 2e 2e 2e 2e 2e 2e 2e  |................|
0000200   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .
*
00000220  0d 0a                                             |..|
0000220  \r  \n                                                        
0000222
[unix1]~ >

хорошо видно что вместо одного символа linefeed(\n) у нас еще и масадовский \r имеется, избавляемся:

[unix1]~ > sed -e "s/^M//g" prob

как нам набрать в командной строке или в VI символ \r, для bash и vi -
очень просто: ctrl-v ctrl-m (ctrl-v - войти в режим ввода спец.символов,
ctrl-m - ввести символ \r(enter))