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

Исходное сообщение
"Конвертирование текста"

Отправлено Ami , 01-Апр-10 12:14 
есть файл кодировка DOS
сейчас в нем
колличество строк не ограничено как его конвертировать в формат
по 79 байт в строке
есть файл 1.txt
$cat 1.txt
На рабочем столе для каждого пользователя присутствует ярлычок какой-нить красочный. Допустим, происходит обрыв связи. У меня этот момент отлавливается через ннкрон и если связи нет - убивает все процессы, связанные с СМ. Далее, после восстановления связи
...cut
нужно сделать перенос каждой строки в положении 79 символ конец данной строки
80 символ новая строка и так далее по тексту
получаем:
На рабочем столе
для каждого поль
зователя присутс
твует ярлычок ка
кой-нить красочн
ый.
и каждую новую строчку закрыть в кавычки ""
"На рабочем столе"
"для каждого поль"
"зователя присутс"
"твует ярлычок ка"
"кой-нить красочн"
"ый. "
помогите кто знает

Содержание

Сообщения в этом обсуждении
"Конвертирование текста"
Отправлено Pahanivo , 01-Апр-10 16:12 
perl


"Конвертирование текста"
Отправлено Ami , 01-Апр-10 16:24 
>perl

а подробнее
я набросал такое
#!/bin/perl -w

open FH, "<", "1.txt";
$l = <FH>;
$position=tell(FH);
seek(FH,$position+10,1);

print "\"$l\"";
print $position;
close FH;
но как добавить бы перенос по строчно строка и 60 символов в ней и так переносило чтоб


"Конвертирование текста"
Отправлено Pahanivo , 01-Апр-10 17:59 
N - требуемая длина

1: читаем строку в строковый буфер (while EOF)
2: отсекаем \n
3: конкатинируем с предыдущей прочитанной (если такая имеется)
4: длина буфера > N ?
нет : goto 1
да : отсекаем N, добавляем \n, записываем в выходной файл


"Конвертирование текста"
Отправлено Ami , 02-Апр-10 08:41 
>N - требуемая длина
>
>1: читаем строку в строковый буфер (while EOF)
>2: отсекаем \n
>3: конкатинируем с предыдущей прочитанной (если такая имеется)
>4: длина буфера > N ?
> нет : goto 1
> да : отсекаем N, добавляем \n, записываем в выходной файл
>
>

все понятно но как вот в чем вопрос я с перлом не особо(

а примером кода не могли бы продемонстрировать
Спасибо.


"Конвертирование текста"
Отправлено Pahanivo , 02-Апр-10 09:33 
>[оверквотинг удален]
>> нет : goto 1
>> да : отсекаем N, добавляем \n, записываем в выходной файл
>>
>>
>
>все понятно но как вот в чем вопрос я с перлом не
>особо(
>
>а примером кода не могли бы продемонстрировать
>Спасибо.

примеры построчного чтения для readlline - см в мануале
chomp - отрезка конца
. - конкатенация


"Конвертирование текста"
Отправлено Ami , 06-Апр-10 17:25 
>[оверквотинг удален]
>>
>>все понятно но как вот в чем вопрос я с перлом не
>>особо(
>>
>>а примером кода не могли бы продемонстрировать
>>Спасибо.
>
>примеры построчного чтения для readlline - см в мануале
>chomp - отрезка конца
>. - конкатенация

набросал примерно

open F, "<lolo" or die "Can't open!";
@f=<F>;

for($i=0; $i<=$#f; $i++) {
$f[$i] =~ s/(.{75})/"$1"\n/g;
print "$f[$i]\n";
}
close F;

но он не отрабатывает если в тексте попадается точка(( как обойти

пользовался также
use Text::Wrap
сним получше ,но он умеет только ставить кавычку вначале а в конце нет(


"Конвертирование текста"
Отправлено Anatoly , 08-Апр-10 08:59 
скрипты, перлы... в vim три кнопки нажать

$vim file
gqG

:help gq


"Конвертирование текста"
Отправлено Pahanivo , 08-Апр-10 10:03 
>скрипты, перлы... в vim три кнопки нажать
>
>$vim file
>gqG
>
>:help gq

нажать != автоматизация


"Конвертирование текста"
Отправлено Andrey Mitrofanov , 08-Апр-10 12:33 
Не-е-е, правильный ответ ~~ "emacs --batch ..." со скриптом %->

"Конвертирование текста"
Отправлено Pahanivo , 08-Апр-10 13:55 
проще разобраться с перл ))