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

Поиск:

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


Новичок



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

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



Всем доброго времени суток. 
Пытаюсь отсортировать текстовый файл от мусора. Как искать в файле нужный мне смивол вроде бы разобрался, но вот как забрать три строки за этим символом понять не могу.
Имеется исходный файл, содержащий следующую информацию:
Код

ЪЧ20.07.2016 19:21:35.640 [<] 7    0    1    1    HI

#    1

ЪЧ20.07.2016 19:21:35.656 [<] 01    1    23    xF103



ЪЧ20.07.2016 19:21:38.296 [<] @    101

ЪЧ20.07.2016 19:21:38.312 [<]    2    1234568    2.15

ЪЧ20.07.2016 19:21:38.328 [<] 6    4    86    2    x9BF3


ЪЧ20.07.2016 19:21:38.343 [<] 


ЪЧ20.07.2016 19:21:39.921 [<] #    101    3    2

ЪЧ20.07.2016 19:21:39.937 [<] 3    x9F63

ЪЧ20.07.2016 19:22:11.234 [<] @    101

ЪЧ20.07.2016 19:22:11.250 [<]    11    1234568    35.

ЪЧ20.07.2016 19:22:11.265 [<] 015    9    90    2    xB2A

ЪЧ20.07.2016 19:22:11.281 [<] 7


Мне нужно вытащить из этого файла три строчки, в первой из которых содержится символ "@". Таких троестрочий в файле присутствует несколько. 


Я пишу следующее 
Код

#!/usr/bin/perl
use strict;
open INFILE, '<INPUT.txt' || die ( 'Не могу открыть файл INPUT.' );
open OUTFILE, '>OUTPUT.txt' || die ( 'Не могу открыть файл OUTPUT.' );
while (<INFILE>) {
    chomp;
    if (/@/i) {
    
    print OUTFILE $' . "\n";
    #print OUTFILE $+ . "\n";
    
    }
}
close OUTFILE;
close INFILE;


Программа находит нужный символ, пишет в новый файл строку , которая идет за ним, но вот как заставить ее ещё и оставшиеся две строки соединить.

В идеале во втором файле хотелось бы  видеть:

1234568    2.156
1234568    35.015

Эта информация содержится в этих трех строках

@    101

ЪЧ20.07.2016 19:21:38.312 [<]    2    1234568    2.15

ЪЧ20.07.2016 19:21:38.328 [<] 6    4    86    2    x9BF3

Подскажите, как это можно реалищовать?

PM MAIL   Вверх
arto
Дата 19.8.2016, 13:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1495
Регистрация: 31.10.2004

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



open F, "/tmp/a";
my @ary;
while (<F>) { 
  m#...# && push @ary, $_, scalar <F>, scalar <F>;
}

как-то так.
PM MAIL ICQ   Вверх
AKOTb
Дата 4.9.2016, 19:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



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

1000001 77.847
1000004 79.914
1234568 89.656
1000001 212.843
1234568 225.265
1000004 234.535

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

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


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

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


 




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


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

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