Модераторы: korob2001, ginnie
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Поиск и изменеие строки в файле. 
:(
    Опции темы
RedOk
  Дата 7.4.2008, 03:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 19
Регистрация: 30.11.2007
Где: Общага

Репутация: нет
Всего: нет



Допустим дан файл следующего содержания:
Код

#1
#2
#3
#4
#5
#6

Как найти к примеру 5 и удалить перед ней #    .?
Заранее спасибо.

PM MAIL ICQ   Вверх
konstant1n
Дата 7.4.2008, 08:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 3
Регистрация: 6.4.2008

Репутация: нет
Всего: нет



смотри в  п. 5.2 от faq.perl.org 
PM MAIL   Вверх
GoDleSS
Дата 7.4.2008, 10:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 105
Регистрация: 11.2.2007
Где: Пироговский

Репутация: 2
Всего: 2



Постараюсь попроще сделать )
Код

my $find_match = '#5$';
my $to_delete = '#';
open(IF, $input);
open(OF, ">$output");
  while (<IF>) {
    chomp;
    if (m/$find_match/o) {
      s/$to_delete//o;
    }
    print OF "$_\n";
  }
close(OF);
close(IF);


--------------------
It's a nice day to die my friend!
PM MAIL WWW ICQ   Вверх
RedOk
Дата 7.4.2008, 11:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 19
Регистрация: 30.11.2007
Где: Общага

Репутация: нет
Всего: нет



GoDleSS спаибо.
PM MAIL ICQ   Вверх
tolkien
Дата 7.4.2008, 17:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 277
Регистрация: 5.4.2008

Репутация: 4
Всего: 4



Можно все в один шаблон засунуть и поиск и замену

s/#5//;
PM MAIL   Вверх
GoDleSS
Дата 7.4.2008, 17:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 105
Регистрация: 11.2.2007
Где: Пироговский

Репутация: 2
Всего: 2



Цитата(толкиен @  7.4.2008,  15:13, пост1470629)
Можно все в один шаблон засунуть и поиск и замену s/#5//;

Действительно, можно и так, но есть разница.
Если в файле будет очень много строк и редко встречается нужная, то оригинальный код будет работать быстрее по 2 причинам:
1. Поиск осуществляется быстрее, чем замена.
2. Флаг /о говорит о том, что данный шаблон компилируется один раз(имеет смысл лишь в случае применения предшаблонов, т.е. шаблонов, заранее загнанных в переменные.

В случае же вот такого коротенького файла 
Код

s/#(5)/$1/;

отработает скорее всего быстрее или с той же скоростью, при меньшем объеме кода.


Это сообщение отредактировал(а) GoDleSS - 7.4.2008, 23:11
--------------------
It's a nice day to die my friend!
PM MAIL WWW ICQ   Вверх
tolkien
Дата 7.4.2008, 18:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 277
Регистрация: 5.4.2008

Репутация: 4
Всего: 4



А ты не прав. Работать будет отлично и при очень и очень большом файле даже при гиганском файле.

Знаешь почему? 

Потому что поиск ведется не по всему файлу. А по короткой строке. 
PM MAIL   Вверх
nitr
Дата 7.4.2008, 21:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 2543
Регистрация: 10.2.2006
Где: Россия :)

Репутация: 37
Всего: 84



tolkien, а что с памятью будет?


--------------------
PM   Вверх
tolkien
Дата 7.4.2008, 21:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 277
Регистрация: 5.4.2008

Репутация: 4
Всего: 4



У тебя строки мегабайтные что ли?
PM MAIL   Вверх
nitr
Дата 8.4.2008, 00:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 2543
Регистрация: 10.2.2006
Где: Россия :)

Репутация: 37
Всего: 84



То что у меня при мне.
Цитата(tolkien @  7.4.2008,  18:24 Найти цитируемый пост)
Работать будет отлично и при очень и очень большом файле даже при гиганском файле.

Уважаемый, это ваше высказывание. Вот теперь постарайтесь это обосновать, уже нираз приводили коды/примеры/т.п. для ускорения/упрощения/"менеересурсопожираемости", а вы взяли всё это "обос***и" в одном ответе.


--------------------
PM   Вверх
PanamOS
Дата 8.4.2008, 06:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 54
Регистрация: 29.1.2008

Репутация: нет
Всего: нет



nitr, но первый пример тоже не застрахован от чрезмерных расходов памяти при больших строках;)
Но Вы безусловно правы по поводу

Цитата(nitr @  8.4.2008,  00:20 Найти цитируемый пост)
"обос***и" в одном ответе

PM MAIL   Вверх
nitr
Дата 8.4.2008, 23:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 2543
Регистрация: 10.2.2006
Где: Россия :)

Репутация: 37
Всего: 84



PanamOS, не спорю, но предложенный с массивом - через чур smile (я про вариант "предложенный" тут) . Можно конечно подумать в сторону некоторых модулей, но зачем, редко возникают такие ситуации, когда "всё в одном".


--------------------
PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Perl"
korob2001
sharq
  • В этом разделе обсуждаются общие вопросы по языку Perl
  • Если ваш вопрос относится к системному программированию, задавайте его здесь
  • Если ваш вопрос относится к CGI программированию, задавайте его здесь
  • Интерпретатор Perl можно скачать здесь ActiveState, O'REILLY, The source for Perl
  • Справочное руководство "Установка perl-модулей", можно скачать здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, korob2001, sharq.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Perl: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0928 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.