![]() |
Модераторы: korob2001, ginnie |
![]() ![]() ![]() |
|
asmlover |
|
|||
Новичок Профиль Группа: Участник Сообщений: 14 Регистрация: 7.8.2005 Репутация: нет Всего: нет |
1) Есть текстовй файл. Допустим я его считал, так вот надо во всех местах последовательность пустых строк сузить до одной пустой строки. Т.е. есть массив строк (считал из текстового файла):
бла-бла-бла <пустая строка, возможно состоящая из знаковом пробелов табуляции и сивола конца строки> <еще одна> <и еще одна> <и т.д.> бла-бла-бла Надо, чтобы получилось так: бла-бла-бла < только одна пустая строка> бла-бла-бла Если брать просто пустые строки, то сделать это довольно просто. Но как учитывать те, которые состоят из пробелов или знаков табуляции или еще из чего-нибудь невидимого? Подскажите, решение please 2) Как для всех файлов заданной директории вызвать внешнюю программу (cksum) и вывести результат ее работы (для каждого файла ) на экран? Спасибо |
|||
|
||||
Ivan Kolesnikov |
|
||||
Шустрый ![]() Профиль Группа: Участник Сообщений: 113 Регистрация: 9.3.2005 Где: г. Новокузнецк Репутация: 3 Всего: 6 |
1)
Для этого обычно используют регулярные выражения ![]()
^ - начало строки; $ - конец \s - пробельный символ (в том числе табуляция) * - 0 или более символов 2) 1. получаешь список файлов в директории 2. для каждого файла формируешь выполняемую команду и выполняешь ее --------------------
|
||||
|
|||||
korob2001 |
|
||||||||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2871 Регистрация: 29.12.2002 Репутация: 31 Всего: 61 |
Не знаю на сколько правильно я понял задачу. Я понял это так:
Допустим есть файл:
На выходе мы хотим получить содержимое этого файла в таком виде:
Если я тебя правильно понял, тогда вот решение:
В данном случае стоит обратить внимание на то, что здесь мы не сохраняем содержимое всего файла в память, т.е. в массив. Потому для данного кода не важно, какого размера будет твой файл, в любом случае мы никогда не загоним в тупик оперативную память. Да, вот ещё что: В данном примере если первая или несколько первых строк будут пустыми или с пробелами или с табуляцией, то самая первая строка на выходе будет пустой, это не всегда желательно. Если тебе нужно пропустить первые пустые строки и начать вывод именно с не пустой строки, то просто при объявлении переменной $space, инициализируй её значение в 1, т.е. замени строку:
на
После чего все пустые строки в начале файла будут пропущены. Это сообщение отредактировал(а) korob2001 - 14.9.2005, 18:05 -------------------- "Время проходит", - привыкли говорить вы по неверному пониманию. "Время стоит - проходите вы". |
||||||||||
|
|||||||||||
sharq |
|
||||
![]() Perl Liker ![]() ![]() Профиль Группа: Участник Сообщений: 841 Регистрация: 13.12.2004 Где: Ростов-на-Дону Репутация: 23 Всего: 28 |
asmlover
Выполнение внешней команды и вывод результатов:
-------------------- [color=gray]There's More Than One Way To Do It[/color] |
||||
|
|||||
asmlover |
|
|||
Новичок Профиль Группа: Участник Сообщений: 14 Регистрация: 7.8.2005 Репутация: нет Всего: нет |
Ivan Kolesnikov
Спасибо за объяснение. Все сразу понял, кроме этого момента. Что значит - 0 или более символов? Может быть 1 или более символов? ![]() korob2001 Спасибо, вроде бы все понял. Но ты немного неправильно понял, что я хотел. В непустых строках пробелы и знаки табуляции удалять не надо ;) sharq Спасибо |
|||
|
||||
korob2001 |
|
||||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2871 Регистрация: 29.12.2002 Репутация: 31 Всего: 61 |
Тем проще, вот пример без удаления символов пробелов, табуляций в не пустых строках.
Нет, всё верно * - 0 и более символов. Это значит что если даже в строка будет абсолютно пуста, т.е. без пробелов и табуляции, то такая строка будет сообтветствовать шаблону /^\s*$/, чего нельзя сказать о таком регулярном выражении /^\s+$/, где + - 1 и более. Это сообщение отредактировал(а) korob2001 - 14.9.2005, 19:17 -------------------- "Время проходит", - привыкли говорить вы по неверному пониманию. "Время стоит - проходите вы". |
||||||
|
|||||||
![]() ![]() ![]() |
Правила форума "Perl" | |
|
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, korob2001, sharq. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Perl: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |