Xpoint
   [напомнить пароль]

Работа с текстом

Метки: [без меток]
2010-04-02 15:21:25 [обр] Ami[досье]
сообщение промодерировано

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

#!/bin/perl -w

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

print "\"$l\"";
print $position;
close FH;

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

спустя 2 часа 23 минуты [обр] Михаил Кюршин aka ya-ya(47/414)[досье]

Если данных не очень много, считывайте все в строку, на всякий случай удаляйте переводы строк, и вставляйте после каждого 79го символа перевод строки с помощью регулярных выражений.
Варианты обсуждались тут Замена каждого n-го символа в тексте

можете сделать так

$s =~ s/(.{79})/"$1"\n/g;

это правда оставит последнюю вашу строку без кавычек, но я не буду лишать вас удовольствия решить эту проблему

спустя 1 день [обр] Роман Чемисов(56/327)[досье]
спустя 2 дня 22 часа [обр] Ami[досье]
сообщение промодерировано

ничего не получается((

open F, "<lolo" or die "Can't open!";
@f=<F>;
for($i=0; $i<=$#f; $i++) {
#$f[$i] =~ s!^\s*$!!;
$f[$i] =~ s/(.{75})/"$1"\n/g;
print "$f[$i]\n";
}
close F;

после этого текст выглядит так :
"Сведения о длительности дебиторской задолженности, незавершенного строител"

ьства и сумм до выяснения

         Длительность дебиторской задолженности в разрезе сроков:

- до востребования - 1.55 тыс.руб.;

- до 30 дней -1.55 тыс.руб. ;

- от 1 до 6 месяцев - 1.55 тыс. руб.;

"Банком приняты меры к урегулированию и минимизации сумм на счетах до выясне"

спустя 3 минуты [обр] Ami[досье]
лучше дела обстоят с Text::Wrap
"полученных
"преступным путем и финансирования терроризма>, проверка организации
"кадрово
спустя 12 минут [обр] Ami[досье]
да и как быть с точками в файле они есть
спустя 10 часов [обр] Роман Чемисов(56/327)[досье]
Ami[досье]
Скорее всего проблема в кодировке. Попробуйте перевести текст в UTF-8 и
perldoc Text::WrapI18N
спустя 4 часа 56 минут [обр] Ami[досье]
попробовал да спасибо Роман
все получилось кроме закрытой кавычки в конце каждой строки
то есть текст
выглядит так
"dfsdfsdfsdfsdfsdfsddf
"hfghfghfgfghfghfghfgh
"werwerwerwerwerwerwer
"sdfsd.
"dfgdfgdfg
"ghfghfghfghfghfghffgh
спустя 2 часа 56 минут [обр] Роман Чемисов(56/327)[досье]
Ami[досье]
Кавычку я вам оставляю :-)
спустя 1 час 41 минуту [обр] Ami[досье]
всю голову сломал никак не могу понять как((
спустя 6 минут [обр] Ami[досье]
#!/bin/perl -w
use Text::Wrap
$Text::Wrap::columns = 75;
open(F, "lolo") or die "Ошибка открытия файла: $!";
@F = <F>;
print wrap('"','"',@F);
close(F);
спустя 6 минут [обр] Роман Чемисов(56/327)[досье]
Powered by POEM™ Engine Copyright © 2002-2005