Thread Daten aus einer Datei lesen und in ein Verzeichnis/ Datei speichern (11 answers)
Opened by Sanny at 2010-09-26 22:18

Sanny
 2010-09-30 11:03
#141580 #141580
User since
2010-09-26
11 Artikel
BenutzerIn
[default_avatar]
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

View full thread Daten aus einer Datei lesen und in ein Verzeichnis/ Datei speichern