![]() |
Модераторы: korob2001, ginnie |
![]() ![]() ![]() |
|
tedy1 |
|
|||
Новичок Профиль Группа: Участник Сообщений: 22 Регистрация: 28.6.2010 Репутация: нет Всего: нет |
Подскажите:
есть файл в нем такая информация: Name=d1232 Name=s3452 Name=f3453 19.11.2011 Printer Name=h7692 Name=g2355 19.11.2011 HDD Name=a1356 Нужно получить (если после названия стоит дата): Name=f3453 19.11.2011 Printer Name=g2355 19.11.2011 HDD
} |
|||
|
||||
dixoNICH |
|
|||
Бывалый ![]() Профиль Группа: Участник Сообщений: 222 Регистрация: 20.3.2011 Репутация: нет Всего: нет |
Это сообщение отредактировал(а) dixoNICH - 29.11.2011, 07:56 |
|||
|
||||
tedy1 |
|
|||
Новичок Профиль Группа: Участник Сообщений: 22 Регистрация: 28.6.2010 Репутация: нет Всего: нет |
dixoNICH,
Что то у меня не получилось, подскажите где не так (сразу не ругайте, не силён в Perl)?
Это сообщение отредактировал(а) tedy1 - 29.11.2011, 14:30 |
|||
|
||||
arto |
|
|||
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1495 Регистрация: 31.10.2004 Репутация: 38 Всего: 40 |
# perl -lne 'if (m#^\d\d\.\d\d\.\d\d\d\d\s+\w+#) { print "$a\n$_"; next; } $a = $_' file
Name=f3453 19.11.2011 Printer Name=g2355 19.11.2011 HDD # |
|||
|
||||
dixoNICH |
|
|||
Бывалый ![]() Профиль Группа: Участник Сообщений: 222 Регистрация: 20.3.2011 Репутация: нет Всего: нет |
ладно. во-первых, уберите тогда уж use strict;
во-вторых : вы не вызывайте функцию. эта функция принимает параметры : имя файла и дату, вызов производится так &search("1.txt", "19.11.2011") (например) |
|||
|
||||
tedy1 |
|
||||
Новичок Профиль Группа: Участник Сообщений: 22 Регистрация: 28.6.2010 Репутация: нет Всего: нет |
Где не правильно? Это сообщение отредактировал(а) tedy1 - 1.12.2011, 06:14 |
||||
|
|||||
dixoNICH |
|
|||
Бывалый ![]() Профиль Группа: Участник Сообщений: 222 Регистрация: 20.3.2011 Репутация: нет Всего: нет |
что это?
)) search() { my( $file, $date) =@_; ..... ..... return @arr; } $date = '19.11.2011'; $file_name = '1.txt'; &search($file_name, $date); |
|||
|
||||
tedy1 |
|
|||
Новичок Профиль Группа: Участник Сообщений: 22 Регистрация: 28.6.2010 Репутация: нет Всего: нет |
Правильно?
Это сообщение отредактировал(а) tedy1 - 1.12.2011, 07:14 |
|||
|
||||
dixoNICH |
|
|||
Бывалый ![]() Профиль Группа: Участник Сообщений: 222 Регистрация: 20.3.2011 Репутация: нет Всего: нет |
da
|
|||
|
||||
tedy1 |
|
|||
Новичок Профиль Группа: Участник Сообщений: 22 Регистрация: 28.6.2010 Репутация: нет Всего: нет |
dixoNICH,
Извиняюсь, а как получить эти данные: Name=f3453 19.11.2011 Printer Name=g2355 19.11.2011 HDD Пробовал все переменные подставлять в print ""; Ввывод так и не получил. Или надо ещё что то дописывать? Это сообщение отредактировал(а) tedy1 - 2.12.2011, 07:46 |
|||
|
||||
dixoNICH |
|
|||
Бывалый ![]() Профиль Группа: Участник Сообщений: 222 Регистрация: 20.3.2011 Репутация: нет Всего: нет |
print &search($file, $date);
|
|||
|
||||
tedy1 |
|
|||
Новичок Профиль Группа: Участник Сообщений: 22 Регистрация: 28.6.2010 Репутация: нет Всего: нет |
print &search($file, $date); # ни чего не выдаёт.
dixoNICH,
Это сообщение отредактировал(а) tedy1 - 2.12.2011, 12:37 |
|||
|
||||
arto |
|
|||
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1495 Регистрация: 31.10.2004 Репутация: 38 Всего: 40 |
\n\r?
|
|||
|
||||
dixoNICH |
|
|||
Бывалый ![]() Профиль Группа: Участник Сообщений: 222 Регистрация: 20.3.2011 Репутация: нет Всего: нет |
/(name=\w\d{4}\n\r?$date\s\w+)\n\r?/ig
arto, вы это имеет ввиду? у меня всё работает и так. |
|||
|
||||
arto |
|
|||
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1495 Регистрация: 31.10.2004 Репутация: 38 Всего: 40 |
# file /tmp/aa.txt
/tmp/aa.txt: ASCII text # perl -MData::Dumper -e '$file = do { local $/; open F,$ARGV[0] and <F> }; $date = "19.11.2011"; push @arr, $1 while($file=~m/(name=\w\d{4}\n$date\s\w+)/ig); print Dumper \@arr' /tmp/aa.txt $VAR1 = [ 'Name=f3453 19.11.2011 Printer', 'Name=g2355 19.11.2011 HDD' ]; # unix2dos /tmp/aa.txt unix2dos: converting file /tmp/aa.txt to DOS format ... # file /tmp/aa.txt /tmp/aa.txt: ASCII text, with CRLF line terminators # perl -MData::Dumper -e '$file = do { local $/; open F,$ARGV[0] and <F> }; $date = "19.11.2011"; push @arr, $1 while($file=~m/(name=\w\d{4}\n$date\s\w+)/ig); print Dumper \@arr' /tmp/aa.txt $VAR1 = []; # perl -MData::Dumper -e '$file = do { local $/; open F,$ARGV[0] and <F> }; $date = "19.11.2011"; push @arr, $1 while($file=~m/(name=\w\d{4}\r?\n$date\s\w+)/ig); print Dumper \@arr' /tmp/aa.txt $VAR1 = [ 'Name=f3453 19.11.2011 Printer', 'Name=g2355 19.11.2011 HDD' ]; # |
|||
|
||||
![]() ![]() ![]() |
Правила форума "Perl" | |
|
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, korob2001, sharq. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Perl: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |