Thread Suchen von Unten nach Oben: Suchen von UNTEN nach OBEN (57 answers)
Opened by yasukatakaya at 2007-05-31 11:57

yasukatakaya
 2007-06-04 13:35
#77105 #77105
User since
2007-05-31
68 Artikel
BenutzerIn
[default_avatar]
So hier nun eine Beispieldatei die ich durchsuchen will:
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
23.05.2007 13:11:11  UUT: MSA16_92   Start Test: T1_KENN.CBT
=============================================================================
23.05.2007 13:11:11 Start Test FRAGE_BARCODE
13:11:14 PASS
23.05.2007 13:11:14 Start Test BARCODE

Sachnummer: AATHD73141.087
Kundennummer: 12345
Flexnummer: 95.0038.9975

13:11:14 PASS
23.05.2007 13:11:14 Start Test TCK_4M
13:11:14 PASS
23.05.2007 13:11:14 Start Test D151_LU

Schiebekette defekt (IrShift)
unregelm&„áig, beginnend bei D111
Verbindung zwischen D111(TDO) und D160(TDI) pr&fen

13:11:14 FAIL

Bitte pruefen Sie folgende Punkte bei einem Schiebekettenfehler : !!
- Schalterstellung "Rest"
- Resetknopf gedrueckt, wenn SW geladen wurde

===========================================================================
13:11:14 F A I L
=============================================================================


das Ergebnis muss so aussehen:

Code: (dl )
1
2
3
4
{@BATCH|AATHD73141||GOEPEL_BSCAN||KDSNR:12345|ICT||PB/PL_P|uqm161|||
{@BTEST|9500389975|01|070523131111|||||n|n|070523131114||1|
{@RPT|Faild}
{@RPT|Schiebekette defekt (IrShift) unregelm&„áig, beginnend bei D111 Verbindung zwischen D111(TDO) und D160(TDI) pr&fen}


So und nun mein Code dazu der aber nur das ausgibt

{@BATCH|AATHD73141||GOEPEL_BSCAN||KDSNR:12345|ICT||PB/PL_P|uqm161|||
{@BTEST|9500389975|01|070523131111|||||n|n|070523131114||1|
{@RPT|Faild}

ich will aber, dass er alles ausgibt, wie oben!!

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
# !bin\perl\
# AS 31.05.07

$quelle = $ARGV[0];
$x = $ARGV[0];
$x =~ s/(\w+)\.\w+/$1/;
$ziel = $x;

#~~~ Datei einlesen und TXT-Datei erzeugen ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

open ($INPUT,"<$quelle") or die "konnte $ziel nicht oeffnen,$!\n";
undef $/; &nbsp
; &nbsp
; # bringt die Datei ins Skalare, ist somit leichter zu suchen
open (OUTPUT,">$ziel.txt") or die "konnte $ziel nicht oeffnen,$!\n";


# Ãœbergabe von der Input-Datei in $_
$_ = <$INPUT>;
close ($INPUT);




# damit man später in dieser suchen kann
#~~~ Ende ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~


#~~~ Einlesen von Seriennummer, Sachnummer, Datum (Start und Ende), Kundennummer ~~~~~~


# Sachnummer in $sachnummer speichern
($sachnummer) = /Sachnummer:\s(\w+)/sm;

($kundennummer) = /Kundennummer:\s(\w+)/sm;

($serien_nr) = /Flexnummer:\s(\d{2}.\d{4}.\d{4})/sm;
# wie bei der Sachnummer
@sd = $serien_nr =~ /(\d{2}).(\d{4}).(\d{4})/gs;
$seriennummer = $sd[0].$sd[1].$sd[2];

($startdate) = /(\d{2}.\d{2}.\d{4} \d{2}:\d{2}:\d{2}) /sm;
# wie bei der Sachnummer
@y = $startdate =~ /(\d{2}).(\d{2}).\d{2}(\d{2}) (\d{2}):(\d{2}):(\d{2})/gs;
$starttest = $y[2].$y[1].$y[0].$y[3].$y[4].$y[5];

#~~~ Ende ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~


#~~~ Ausgabe in Textdatei~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

if (grep (m/F A I L/, $_)) &nb
sp; &nb
sp; # sucht nach FAIL in $_ (enthält den Inhalt des Dokuments)
{
$status = "01";
$result = "Faild";
($endedate) = /(\d{2}:\d{2}:\d{2} F A I L)/sm;
@z = $endedate =~ /(\d{2}):(\d{2}):(\d{2})/gs;
$endetest = $y[2].$y[1].$y[0].$z[0].$z[1].$z[2];

#($fehler) = /PASS\s(w+)\sFAIL/gsm;
}
else
{
$status = "00";
$result = "Passed";
($endedate) = /(\d{2}:\d{2}:\d{2}\sP A S S)/sm;
@z = $endedate =~ /(\d{2}):(\d{2}):(\d{2})/gs;
$endetest = $y[2].$y[1].$y[0].$z[0].$z[1].$z[2];
}

print OUTPUT "{\@BATCH|$sachnummer||GOEPEL_BSCAN||KDSNR:$kundennummer|ICT||PB/PL_P|uqm161|||\n";
print OUTPUT "{\@BTEST|$seriennummer|$status|$starttest|||||n|n|$endetest||1|\n";
print OUTPUT "{\@RPT|$result}\n";
#print OUTPUT "{\@RPT|$fehler


#~~~ Ende ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

close OUTPUT;

# --> END of Code

View full thread Suchen von Unten nach Oben: Suchen von UNTEN nach OBEN