Страница 1 из 2

удалить в тексте ^M

Добавлено: 2008-08-03 3:05:12
ProFTP
как удалить перенос с ^M из виндовс?

у меня был скрипт, но я его потерял, сейчас в гугле найти не могу, подскажмите такой скрипт плиз

Re: удалить в тексте ^M

Добавлено: 2008-08-03 3:19:10
zingel
Заливать на ftp файлы нужно в binary mode просто =)

Re: удалить в тексте ^M

Добавлено: 2008-08-03 3:20:41
zingel

Код: Выделить всё

sed 's/^[ ^M  ]*//')

Re: удалить в тексте ^M

Добавлено: 2008-08-03 3:21:17
ProFTP
файл уже есть...

он через http получился

на perl я не найду как решить... может плохо искал в гугле, но не знаю что туда написать чтобы найти...

Re: удалить в тексте ^M

Добавлено: 2008-08-03 3:22:04
ProFTP
спасибо, на shell уже забыл

Re: удалить в тексте ^M

Добавлено: 2008-08-03 3:27:25
ProFTP
не работает :)

Код: Выделить всё

cat t.txt > sed 's/^[ ^M  ]*//')
Syntax error: ")" unexpected

Re: удалить в тексте ^M

Добавлено: 2008-08-03 3:33:35
zingel
ну скобочку убрать сложно что ли? =)

Код: Выделить всё

sed 's/^[ ^M  ]*//'

Re: удалить в тексте ^M

Добавлено: 2008-08-03 3:36:14
ProFTP

Код: Выделить всё

$ cat t.txt > sed 's/^[ ^M  ]*//'
cat: s/^[ ^M  ]*//: No such file or directory

Re: удалить в тексте ^M

Добавлено: 2008-08-03 3:37:37
zingel
я в шоке, иде скорей man regexp && man intro, пока никто не видет.... =) я потом потру....

Код: Выделить всё

cat t.txt | sed 's/^[ ^M  ]*//'
UPD:

даже вот так:

Код: Выделить всё

cat t.txt | sed 's/^[ ^M  ]*//' > t-new.txt || echo "error"

Re: удалить в тексте ^M

Добавлено: 2008-08-03 3:46:21
ProFTP
сори, затупил
я уже кажеться догадался ак на своем любимом perl

Код: Выделить всё

open(MA, "ma");
while ($line = <MA>)
{
и перебрать

Re: удалить в тексте ^M

Добавлено: 2008-08-03 4:01:53
ProFTP
zingel писал(а):я в шоке, иде скорей man regexp && man intro, пока никто не видет.... =) я потом потру....

Код: Выделить всё

cat t.txt | sed 's/^[ ^M  ]*//'
UPD:

даже вот так:

Код: Выделить всё

cat t.txt | sed 's/^[ ^M  ]*//' > t-new.txt || echo "error"
не работает

тоже самое, этот символ остаеться...

ладно, погуглю тогда может найду, просто на перле, я прывык открыть файл масивом, тут помои-иу каждый элемент масива - строка, просто перебрать надо...

Re: удалить в тексте ^M

Добавлено: 2008-08-03 4:09:18
ProFTP

Код: Выделить всё

#!/usr/local/bin/perl
open(MA, "t.txt"); while ($line = <MA>) {  $line=~s{^M}{}ig; print $line; }

Re: удалить в тексте ^M

Добавлено: 2008-08-03 4:15:43
ProFTP
НЕ работает все равно

Re: удалить в тексте ^M

Добавлено: 2008-08-03 4:26:37
zingel
Семён Семёныч....

нажимаем:

Код: Выделить всё

vi t.txt
внутрях его жмём и вводим после двоеточия:

Код: Выделить всё

%s/^M//g

Re: удалить в тексте ^M

Добавлено: 2008-08-03 4:40:46
ProFTP
спасибо кончено, но не получилось, в vi я не шарю, такое может сделать kate, но он не ставиться!!
а другого редактора нету?

я написал Ctrl+M он перешел на другу строку просто, и вводить не куда было...

в perl не получилось скалярную величину сохранить в файл, тоже, может помоглобі открыть и закрыть...

Re: удалить в тексте ^M

Добавлено: 2008-08-03 4:43:27
zingel

Код: Выделить всё

Esc, Shift+Q
после двоеточия:

Код: Выделить всё

%s/^M//g

Re: удалить в тексте ^M

Добавлено: 2008-08-03 4:51:22
ProFTP
не получаеться

отвичает:

Код: Выделить всё

:No match found
The No command is unknown
:%s/^M//g
No match found
:s/^M//g
No match found
:
щас попробую в гугде посмотреть, отпишусь

кодировка в файле utf8 он ее собьет наверное, в консоле другая - стандартная кодировка

Re: удалить в тексте ^M

Добавлено: 2008-08-03 7:28:11
zg
юзайте фильтр col -b

Код: Выделить всё

# cat 1.php | cat -v
Hello^M
World!^M
# cat 1.php | col -b | cat -v
Hello
World!

Re: удалить в тексте ^M

Добавлено: 2008-08-03 7:47:46
ProFTP
кодировка utf8, он сносит все русское...

перл когда работал, ничего не сносил....

Re: удалить в тексте ^M

Добавлено: 2008-08-03 13:23:57
zg
ProFTP писал(а):кодировка utf8, он сносит все русское...
локаль никто не отменял

Код: Выделить всё

# ./1.sh | cat -v
M-oM-;M-?M-PM-^_M-QM-^@M-PM-8M-PM-2M-PM-5M-QM-^B,^M
M-PM-<M-PM-8M-QM-^@!^M
-----------
M-PM-^_M-QM-^@M-PM-8M-PM-2M-PM-5M-QM-^B,
M-PM-<M-PM-8M-QM-^@!
# cat 1.sh
#!/bin/sh

LC_ALL=ru_RU.UTF-8
export LC_ALL

cat 1.php
echo "-----------"

cat 1.php | col -b
#

Re: удалить в тексте ^M

Добавлено: 2008-08-04 1:57:49
ProFTP
спасибо, я что-то полинился локаль менять :)

еще можно вот так, но он снесет будет просто прямая строка для nix это подходит

Код: Выделить всё

#!/usr/local/bin/perl
open(MA, "t.txt"); while ($line = <MA>) {  $line=~s/\r//; print $line; }

Код: Выделить всё

   $_ =~ s/\x0D?\x0A$//;

Код: Выделить всё

  $fo = new IO::File "> $fo_name" or die "Cannot open $fo_name : $!";
   binmode($fo);

   print $fo $_.chr(13).chr(10) or die "Write to $fo_name failed: $!";

Re: удалить в тексте ^M

Добавлено: 2008-08-04 12:14:21
salvator

Код: Выделить всё

cat file1.txt | perl -ne 'chomp; print $_, "\n";' > file2.txt

Re: удалить в тексте ^M

Добавлено: 2008-08-19 8:53:22
manefesto
епт...вы чо....есть же утилита dos2unix

Re: удалить в тексте ^M

Добавлено: 2008-08-20 21:06:07
zg
manefesto писал(а):епт...вы чо....есть же утилита dos2unix
где ж ты раньше то был :smile:

Re: удалить в тексте ^M

Добавлено: 2008-08-21 6:41:46
manefesto
а я в этой ветке редко бываю