Thread View: pl.comp.lang.perl
3 messages
3 total messages
Started by Piotr Hosowicz
Fri, 06 Nov 2009 16:30
Problem z regexpem
Author: Piotr Hosowicz
Date: Fri, 06 Nov 2009 16:30
Date: Fri, 06 Nov 2009 16:30
82 lines
2659 bytes
2659 bytes
Witam Grupę,
Mam takowy problem. Muszę zapisywać pewne informacje z oznaczeniem
dokładnie godziny i robię to po prostu w pliku tekstowym pod Midnight
Commanderem (F9 -> Insert date time). Gdybym wiedzial, ze potem
wyciągnięcie tych informacji będzie problemem to bym zrobil jakiś
interfejs WWW i napisał coś w PHP. W PERLu nie jestem za mocny.
Ale do rzeczy. Plik wejściowy jest mniej więcej taki:
--- odtąd
$ cat /home/phz/test/sprzyklad.txt
pią, 6 lis 2009, 14:35:11
pią, 6 lis 2009, 14:35:14 uwagi 1
pią, 6 lis 2009, 14:35:19
pią, 6 lis 2009, 14:35:29 uwagi 2
pią, 6 lis 2009, 14:35:44
pią, 6 lis 2009, 14:39:07
pią, 6 lis 2009, 14:39:11 uwagi 3
--- dotąd
Skrypt ma mi wyodrębnić z tego tylko godziny i mnuty wraz z ew. uwagami,
czyli zxeby na wyjściu dostać:
14:35
14:35 uwagi 1
14:35
14:35 uwagi 2
14:35
14:39
14:39 uwagi 3
Napisałem skrypt który mi nie dziala:
#!/usr/bin/perl
use strict ;
while (<STDIN>){
my $line = $_ ;
$line =~ /^(.{5,6})(\d+)(.+)(.\d{4,4})(\,\s)(.{5,5})(.{4,4})(.*)$/ ;
if ($8){
print $6." (".$8.")\n" ;
}else{
print $6 ;
} ;
} ;
Wynik jego dzialania wskazuje na to, że mimo wykonania w kolenym loopie
pętli operacji =~ nie są w żaden sposób resetowane $1, $2, $3, $4 itd
Wynik jest taki:
$ cat /home/phz/test/sprzyklad.txt | ./test.pl
14:35 (uwagi 1)
14:35 (uwagi 1)
14:35 (uwagi 1)
14:35 (uwagi 1)
14:35 (uwagi 2)
14:35 (uwagi 2)
14:35 (uwagi 2)
14:35 (uwagi 2)
14:35 (uwagi 2)
14:39 (uwagi 3)
Będę bardzo wdzięczny za pomoc, sprawa jest prywatna, ale dość pilna dla
mnie.
--
Z cyklu "Uroki demokracji", czyli pytania i odpowiedzi w teledurniejach:
- Ile kół ma trójkołowiec?
- Dwa.
NP: Black Stone Cherry - Please Come In
Re: Problem z regexpem
Author: Maciej Zielenkieiwcz
Date: Fri, 06 Nov 2009 16:58
Date: Fri, 06 Nov 2009 16:58
25 lines
1493 bytes
1493 bytes
On 2009-11-06 16:30, Piotr Hosowicz <adresat.nieprawidlowski@op.pl> wrote:
> Napisałem skrypt który mi nie dziala:
>
> [...]
>
> Wynik jego dzialania wskazuje na to, że mimo wykonania w kolenym loopie
> pętli operacji =~ nie są w żaden sposób resetowane $1, $2, $3, $4 itd
Tamto wyrażenie regularne było za skomplikowane i nie chciało mi się
szukać w nim błędu, ale coś takiego działa:
#!/usr/bin/perl
use strict ;
while (<STDIN>){
if (/^.*,.*, (\d\d:\d\d):\d\d\s*(.*)$/)
{
if ($2){
print $1." ".$2."\n" ;
} else {
print $1."\n" ;
}
} else {
print "\n";
}
}
Re: Problem z regexpem
Author: Piotr Hosowicz
Date: Fri, 06 Nov 2009 17:15
Date: Fri, 06 Nov 2009 17:15
43 lines
2301 bytes
2301 bytes
Maciej Zielenkieiwcz wrote:
> On 2009-11-06 16:30, Piotr Hosowicz <adresat.nieprawidlowski@op.pl> wrote:
>> Napisałem skrypt który mi nie dziala:
>>
>> [...]
>>
>> Wynik jego dzialania wskazuje na to, że mimo wykonania w kolenym loopie
>> pętli operacji =~ nie są w żaden sposób resetowane $1, $2, $3, $4 itd
>
> Tamto wyrażenie regularne było za skomplikowane i nie chciało mi się
> szukać w nim błędu,
No bo faktycznie namotałem niemiłosiernie. ;-)
> ale coś takiego działa:
>
> #!/usr/bin/perl
> use strict ;
> while (<STDIN>){
> if (/^.*,.*, (\d\d:\d\d):\d\d\s*(.*)$/)
> {
> if ($2){
> print $1." ".$2."\n" ;
> } else {
> print $1."\n" ;
> }
> } else {
> print "\n";
> }
> }
>
Zgadza się, działa jak złoto. Bardzo dziękuję. Jeszcze muszę zrobić
drobne przeróbki i będzie to o co mi chodzi.
--
Miss World 2006: Jestem szczęśliwa, że mogę wspaniale uczestniczyć w
przeżyciu najpiękniejszych kobiet tutaj w Warszawie, gdzie Jan Paweł II,
papież, w Polsce, skąd pochodzi. Spotkałam się z Kościołem Mariackim
w Krakowie, który ciepło ludzi i wielka przyjaźń. Połowa mojego serca
zostanie w Polsce, a druga połowa pojedzie ze mną do mojego kraju.
NP: Alice In Chains - All Secrets Known
Thread Navigation
This is a paginated view of messages in the thread with full content displayed inline.
Messages are displayed in chronological order, with the original post highlighted in green.
Use pagination controls to navigate through all messages in large threads.
Back to All Threads