Thread Daten aus einer Datei lesen und in ein Verzeichnis/ Datei speichern
(11 answers)
Opened by Sanny at 2010-09-26 22:18
Hallo zusammen,
Ich muss mich für die Verwirrungen entschuldigen, die ich hier angestellt habe: Sorry. Ich versuche, dies zu vermeiden. Danke an pq, zur Wiederherstellung der Ordnung :-). payx:"es wäre einfacher, Dich zu unterstützen, wenn Du richtige Beispieldaten schicken würdest und vor allem, wenn Du das ganze Script schicken würdest" Code (perl): (dl
)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 #! /usr/bin/perl #------------------------------------------------------------------------ #Einlesen der Section_Data in das Perl-Skript zur "Weiterverarbeitung" #------------------------------------------------------------------------ @allSec = (""); #Def eines array, in das die Daten aller sections zeilenweise geschrieben werden #Öffnen der Datei, Schreiben der Daten in das array @allSec open(SECDATA, "</home/../sectionInfo.dat") || die "Datei nicht gefunden\n"; while(<SECDATA>) { push(@allSec,$_); #Feldelemente $_ in array "@allsec" schreiben } close(SECDATA); #------------------------------------------------------------------------ #Schreiben der Daten der n Sektionen in n arrayas @secData_$i #------------------------------------------------------------------------ while(my $zeile=<@allSec>) { $i=1; if($zeile=~ m/^datei1\.dat/ .. $zeile=~ m/^datei1\.dat/g) { push(@{$secData_[$i]},$_); $i++; } } #------------------------------------------------------------------------ #Ausgabe der Daten der n Sektionen #------------------------------------------------------------------------ for($j=1; $j<=$i; $j++) { print "Daten der Sektion $j \n"; print @{$secData_[$j]}; } Die "richtigen Beispieldaten": Sek_Data Number of Sections: n Sek_1 datei1.dat NAME 0.547819063 0.000000000 0.147100586 0.147100586 0.1570796 0.147012696002667 -0.108611969983482 0.147003814758948 -0.108557084459560 ......... datei2.dat 1.765106891E+02 -4.413017571E-01 5.408703255E+00 1.000000000E+00 -4.265916985E-01 5.408703255E+00 1.000000000E+00 ......... datei3.dat 1 2 5 6 15 1 3 4 6 18 0.322572 852580.9 28.71477 -0.007283 | M1 P1 ANG1 X1 0.770998 612342.8 23.405685 0.152952 | M2 P2 ANG2 X2 1490.307 911345.2 1.290810 0.000000 | T01 P01 GAM MFRIN -0.000 293.525 | DREHZ RGAS 1567951.0 -5.000000 | RE NCRIT 1.000000 1.000000 | XTRS XTRP 4 0.925000 1.000000 | ISMOM MCRIT MUCON 0.000000 0.000000 | BVR1IN BVR2IN 50 | NITER datei4.tmp ............ datei5.tmp ............. Sek_2 datei1.dat ....... datei2.dat ....... datei3.dat ...... datei4.tmp ............ datei5.tmp ............. Sek_n ....... ....... ....... ....... payx:"Was mir trotzdem auffällt: Den ganzen Dateiinhalt in ein Array zu speichern ist wohl überflüssig, wenn Du das Array anschließend ohnedies zeilenweise abarbeitest." Du meinst also, direkt zeilenweise in n arrays schreiben? payx:"@($secData_[$i]) müssen wohl geschweifte Klammern stehen: @{$secData_[$i]}, wenn Dein AoA wirklich @secData_ heißt." Stimmt :-) , danke payx:"Eine Frage noch: Warum hast Du nicht den Thread Daten aus einer Datei lesen und in ein Verzeichnis/ Datei speichern fortgeführt, in dem Dir Linuxer eine sehr nützliche Antwort gegeben hat?" Das Format meiner input Datei (SekInfo.dat) hat sich geändert und ich habe die ganze Zeit versucht, das Skript von Linuxer entsprechend anzupassen/ testen. Von daher hatte ich da noch nicht weitergemacht. Nun gibt das Skript aus: Daten der Sektion 1 Ziel war: Daten der Sektion 1 datei1.dat NAME 0.547819063 0.000000000 0.147100586 0.147100586 0.1570796 0.147012696002667 -0.108611969983482 0.147003814758948 -0.108557084459560 ......... datei2.dat 1.765106891E+02 -4.413017571E-01 5.408703255E+00 1.000000000E+00 -4.265916985E-01 5.408703255E+00 1.000000000E+00 ......... Daten der Sektion 2 datei1.dat NAME ..... Hmm..Ich versuch das mal "umzustrukturieren". Für Tips/ Vorschläge wäre ich dankbar. Vielen Dank Grüße Sanny |