Thread Aus Textdatei nach bestimmten Wort Wörter auslesen (16 answers)
Opened by Gast_13 at 2013-09-12 12:32

payx
 2013-09-26 16:04
#170683 #170683
User since
2006-05-04
564 Artikel
BenutzerIn

user image
Hallo Sabrina,
Guest Gast_13
Bei dem Code wird quasi in jeder Zeile ab dem dritten Wort ausgelesen und hochgezählt. Ich brauche aber einen Code, der nur in der Zeile, die mit .SUBCKT anfängt, ab dem dritten Wort ausliest(Die anderen Zeilen in der Datei bestehen aus anderen Anfangswörtern und interessieren mich nicht).

Dass das vorkommen kann, hattest Du nicht erwähnt. Mein Code-Beispiel war ja auch nur als Entwurfsidee gedacht. next unless /^\.SUBCKT /; am Anfang der while-Schleife überspringt alle Zeilen, die nicht genau so anfangen.

Guest Gast_13
Zudem gibt es Probleme bei einer Zeile mit weniger als drei Wörtern, da subtrahiert er wieder ein Wort von der Hochzählung.

Auch dass das vorkommen kann, hattest Du nicht erwähnt.

Also, hier mein Code nochmals überarbeitet:
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
#!/usr/bin/perl

use strict;
use warnings;

my $words = 0;

while (<DATA>) {
    
    next unless /^\.SUBCKT /;
        
    #my @wds = splice([split(/[^\w.]+/)],2); (lieber nicht so, siehe Hinweis von Linuxer!)
    my @wds = split(/[^\w.]+/);
    @wds = splice(@wds,2);

    next unless @wds;
    
    print join "; ", @wds;
    print "\n";
    
    $words += scalar(@wds);
    
}

print("words=$words\n");

__DATA__
.SUBCKT D1N4148 Anode1 Kathode1 foo
.SUBCKT D1N4248 Anode2 Kathode2 foo bar
.SUBCKT D1N4348 Anode3 Kathode3
.UBCKT D1N4448 Anode4 Kathode4 foo
SUBCKT D1N4548 Anode5 Kathode5 foo bar
.SUBCKTa D1N4648 Anode6 Kathode6
.SUBCKT D1N4748
.SUBCKT 
.SUBCKT D1N4948 Anode9 Kathode9


Hoffentlich hilft Dir das weiter.

Grüße
payx

Editiert von payx: Code geändert gemäß Hinweis von Linuxer
Last edited: 2013-09-27 12:19:37 +0200 (CEST)

View full thread Aus Textdatei nach bestimmten Wort Wörter auslesen