Schrift
[thread]6531[/thread]

Suche in txt



<< >> 7 Einträge, 1 Seite
Gast Gast
 2004-08-25 11:50
#49619 #49619
Hallo alle zusammen.

Ich habe ein kleines Problem.
Und zwar habe ich ein Textdatei mit sehr vielen Daten die jeweils bestimmten Kanälen zugeordnet sind (z.b. Kanla1 daten Kanal2 daten ...).
Ich bin soweit das die jeweiligen Kanläle mit den Daten in seperate Testdateien gespeichert werden.
Jetzt muss ich mir aber noch in jeder Textdatei anzeigen lassen wie viele Kanäle es gibt.

Ich hoffe ihr könnt mir helfen.
Relais
 2004-08-25 11:57
#49620 #49620
User since
2003-08-06
2244 Artikel
ModeratorIn
[Homepage] [default_avatar]
Klingt so, als bräuchtest Du nur die Kanäle durchzuzählen und das Ergebnis in jede Deiner Dateien zu schreiebn. Oder gibt es dabei Schwierigkeiten, die wir ncoh nicht kennen?
Erst denken, dann posten --
26. Deutscher Perl- u. Raku -Workshop 15. bis 17.04.2024 in Frankfurt/M.

Winter is Coming
Rippchen
 2004-08-25 12:17
#49621 #49621
User since
2004-08-25
12 Artikel
BenutzerIn
[default_avatar]
Ich bekomm das irgendwie nicht so richtig hin.
Die letzte Stimme, die man hört, bevor die Welt explodiert, wird die Stimme eines Experten sein, der sagt: Das ist ... unmöglich!
Ronnie
 2004-08-25 12:27
#49622 #49622
User since
2003-08-14
2022 Artikel
BenutzerIn
[default_avatar]
Poste mal ein Beispiel wie so eine Datei aussieht und was du zählen willst.
Rippchen
 2004-08-25 12:36
#49623 #49623
User since
2004-08-25
12 Artikel
BenutzerIn
[default_avatar]
Die Rohdatei ist so groß das ich sie nicht mal auf meinem Rechner öffen kann da dieser sonst abstürzen würde. Aber das sieht ungefähr so aus:

Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
channel 0
45464
46577
45213
4878734
...

channel 1
57767
76746
746479
43446
...

usw.

Ich möcht jetzt einfach nur die channels zählen und mir anzeigen lassen wieviele es sind.

edit pq: hab mal code-tags hinzugefügt\n\n

<!--EDIT|pq|1093427078-->
Die letzte Stimme, die man hört, bevor die Welt explodiert, wird die Stimme eines Experten sein, der sagt: Das ist ... unmöglich!
renee
 2004-08-25 12:40
#49624 #49624
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
So könntest Du es machen:
Code: (dl )
1
2
3
4
my $file = '/Pfad/zur/datei.txt';
my $result = `grep -c "^channel" $file`; # Backticks
chomp $result;
print "Es sind $result Kanaele\n";
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/
Rippchen
 2004-08-25 12:55
#49625 #49625
User since
2004-08-25
12 Artikel
BenutzerIn
[default_avatar]
Das haut noch nicht so ganz hin am besten ich poste mal den gesammten Quellcode. Der ist baer noch ein bissel unübersichtlich.
Code: (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
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
#!/usr/bin/perl
#require 'ctime.pl';
use POSIX qw(strftime);

$in = $ARGV[0];


open ( IN, "<$in") || die "ERROR, can't open $in";

sub getcfg()
{
 while ( <IN> ){
   if ( $_ =~ /\[adudata.*\]/){
     return 0;
   }
   if ( $_ =~ /starttime=.*/){
     @starttime= split ("=",$_);
   }
   if ( $_ =~ /iSampleRate=.*/){
     @iSampleRate= split ("=", $_);
   }
   if ( $_ =~ /szLabel=.*/){
     @szLabel= split ("=", $_);
   }
   if ( $_ =~ /SensUnit=.*|MeasUnit=.*/){
     @SensUnit= split ("=", $_);
   }
   if ( $_ =~ /startPtime=.*/){
     @startPtime= split ("=", $_);
   }
   if ( $_ =~ /iSampleRate=.*/){
     @iSampleRate=split ("=", $_);
   }
   if ( $_ =~ /iChGroup=.*/){
     @iChGroup=split ("=", $_);
   }
   if ( $_ =~ /iRPMChannel=.*/){
     @iRPMChannel=split ("=", $_);
   }
 }
};

sub printdata()
{
 while ( <IN> )
 {
   #test auf zahl
   if ($_ =~ /^([+-]?\d+(\.\d+)?([Ee][+-]?\d+)?)/ ){
     print OUT "$_";
   }
   else{
     return 0;
   }
 }
};


sub printheader()    #An dieser Stelle soll abgefragt
        #werden wieviele channels es gibt.
{            
 printf (OUT "ch $ch[1]"."\n");
 while ( <IN> )
 {
   $anz = `grep -c "^aduchannel" $_`;
   chomp $anz;
   printf (OUT "number of channels $anz"."\n")
 }
 printf (OUT "Samplerate $iSampleRate[1]");
 printf (OUT "divided by Gain 1  "."\n");
};


while ( <IN> )
{


    if ( $_ =~ /\[aduchannel.*\]/ ){
        chop;chop;
        @ch= split ("aduchannel",$_);
        $zeile= $ARGV[0];
        @name= split ('-',$zeile);
        $out = sprintf ("%s_ch%d.txt", $name[0] , $ch[1] , $szLabel[1] );
        &getcfg();
        $timestr=strftime("%Y%m%d-%H.%M",localtime($starttime[1]));
        $out = $name[0]."_".$timestr."_ch".$ch[1]."_".$szLabel[1].".txt";
        open ( OUT, ">$out" ) || die "ERROR, can't open $out";
        }



    if ( $_ =~ /\[adudata$ch[1]\]/ ){
        &printheader();
        &printdata();
    }


}


close IN;
close OUT;


edit renee: [code]-Tags spendiert\n\n

<!--EDIT|renee|1093424653-->
Die letzte Stimme, die man hört, bevor die Welt explodiert, wird die Stimme eines Experten sein, der sagt: Das ist ... unmöglich!
<< >> 7 Einträge, 1 Seite



View all threads created 2004-08-25 11:50.