Schrift
[thread]9198[/thread]

allg. Frage zum Bearbeiten von Dateien: Dateien bearbeiten

Leser: 2


<< >> 10 Einträge, 1 Seite
Duff
 2007-07-17 17:10
#78549 #78549
User since
2006-10-06
283 Artikel
BenutzerIn

user image
Hallo,

ich habe mal eine allgemeine Frage zur Bearbeitung von großen Dateien (Dateien können bis zu 3 GB groß werden und haben bei 600 MB Größe schon 6 Mio Zeilen und die gewünschten Treffer liegen dann bei 2.500).

Greife ich dann am besten zuerst auf unix-tools zurück, wie (e)grep und dann zusätzlich noch eventuell awk oder soll ich wirklich jede Zeile über eine while-Schleife einlesen und nach Treffern suchen und speichern???

Danke.
D'OH
Daniel
renee
 2007-07-17 17:38
#78550 #78550
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
So lange Du 'ne while-Schleife und keine for-Schleife einsetzt, ist das schon ok...
OTRS-Erweiterungen (http://feature-addons.de/)
Frankfurt Perlmongers (http://frankfurt.pm/)
--

Unterlagen OTRS-Workshop 2012: http://otrs.perl-services.de/workshop.html
Perl-Entwicklung: http://perl-services.de/
Duff
 2007-07-17 18:10
#78551 #78551
User since
2006-10-06
283 Artikel
BenutzerIn

user image
Ok, danke.

Habe es gerade auch mal probiert und zeitmäßig hält es sich bisher noch im Rahmen.

Mein Ansatz sieht bisher so aus:
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
...
# Datei oeffnen
#
open(FH,"<",$file) or die "Kann $file nicht oeffnen: $!";
my $i=1;
while(<>) {
$count = $.;
while(/(^Wort1(:?[0-9]*)).*(Vorkommen.*)/) {
print "$count: $1, $3\n";
last;
}
$i++;
}
close(FH);


Wieso ich allerdings mit $3 auf das Vorkommen in (Vorkommen.*) zugreifen muss verstehe ich nicht so ganz, weil ich doch mit (:?[0-9]*) angebe, dass dies als "normale" Gruppierung zu sehen ist.
D'OH
Daniel
bloonix
 2007-07-17 18:31
#78552 #78552
User since
2005-12-17
1615 Artikel
HausmeisterIn
[Homepage]
user image
[quote=Duff,17.07.2007, 15:10]Greife ich dann am besten zuerst auf unix-tools zurück, wie (e)grep und dann zusätzlich noch eventuell awk oder soll ich wirklich jede Zeile über eine while-Schleife einlesen und nach Treffern suchen und speichern???[/quote]
grep würde es nicht anders machen und jede Zeile, die matched, wohl-
möglich an eine Pipe weiterreichen, wo dann ein awk, sed, cut oder sonst
was die Zeile empfängt, verarbeitet und dann wieder zur nächsten Pipe
weiterreicht. Dann würde ich doch eher mit Perl mitteln arbeiten, denn
Textverarbeitung ist doch genau das, was man mit Perl machen möchte :)
Zudem wird mit jeder Pipe eine Subshell aufgemacht... das ist nicht so
schön.
What is a good module? That's hard to say.
What is good code? That's also hard to say.
One man's Thing of Beauty is another's man's Evil Hack.
renee
 2007-07-17 19:14
#78553 #78553
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Quote
(:?[0-9]*) angebe, dass dies als "normale" Gruppierung zu sehen ist.


Du meintest wohl eher (?:[0-9])...
OTRS-Erweiterungen (http://feature-addons.de/)
Frankfurt Perlmongers (http://frankfurt.pm/)
--

Unterlagen OTRS-Workshop 2012: http://otrs.perl-services.de/workshop.html
Perl-Entwicklung: http://perl-services.de/
murphy
 2007-07-17 19:17
#78554 #78554
User since
2004-07-19
1776 Artikel
HausmeisterIn
[Homepage]
user image
[quote=Duff,17.07.2007, 16:10][...]
Wieso ich allerdings mit $3 auf das Vorkommen in (Vorkommen.*) zugreifen muss verstehe ich nicht so ganz, weil ich doch mit (:?[0-9]*) angebe, dass dies als "normale" Gruppierung zu sehen ist.[/quote]
Du schreibst (:?[0-9]*) = "Gespeicherte Gruppe: eventuell ein Doppelpunkt, dann beliebig oft eine Ziffer", meinst aber wohl (?:[0-9]*) = "Nicht gespeicherte Gruppe: Beliebig oft eine Ziffer".

Allerdings sind die Gruppenklammern in diesem Falle sowieso überflüssig. [0-9]* sollte ausreichen.
When C++ is your hammer, every problem looks like your thumb.
Duff
 2007-07-17 23:45
#78555 #78555
User since
2006-10-06
283 Artikel
BenutzerIn

user image
Stimmt, so war dass mit den nicht-einfangenden KLammern: (?:...).

Deshalb funktionierte auch noch meine suche, weil der : mit dem ? dahinter ja einmal oder keinmal vorkommen darf und bei mir nie vorkam.
D'OH
Daniel
Linuxer
 2007-07-18 01:31
#78556 #78556
User since
2006-01-27
3890 Artikel
HausmeisterIn

user image
Hi,

bei einem meiner Skripte stellte es sich als performanter heraus, die eigentlichen Daten mittels eines greps vorzufiltern, bevor ich sie dann in Perl auswerte...
Ich denke, dass käme auf einen Versuch im jeweiligen Arbeitsumfeld an...\n\n

<!--EDIT|Linuxer|1184749815-->
meine Beiträge: I.d.R. alle Angaben ohne Gewähr und auf Linux abgestimmt!
Die Sprache heisst Perl, nicht PERL. - Bitte Crossposts als solche kenntlich machen!
Duff
 2007-07-18 10:20
#78557 #78557
User since
2006-10-06
283 Artikel
BenutzerIn

user image
Dann werde ich wohl doch mal beide Varianten ausprobieren müssen, da die Meinungen hier ja unterschieldich sind.
D'OH
Daniel
renee
 2007-07-18 11:30
#78558 #78558
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
[quote=Linuxer,17.07.2007, 23:31]Hi,

bei einem meiner Skripte stellte es sich als performanter heraus, die eigentlichen Daten mittels eines greps vorzufiltern, bevor ich sie dann in Perl auswerte...
Ich denke, dass käme auf einen Versuch im jeweiligen Arbeitsumfeld an...[/quote]
Es kommt auch immer darauf an, *wie* man es dann mit Perl realisiert...
OTRS-Erweiterungen (http://feature-addons.de/)
Frankfurt Perlmongers (http://frankfurt.pm/)
--

Unterlagen OTRS-Workshop 2012: http://otrs.perl-services.de/workshop.html
Perl-Entwicklung: http://perl-services.de/
<< >> 10 Einträge, 1 Seite



View all threads created 2007-07-17 17:10.