Schrift
[thread]8838[/thread]

Expliziten Wert aus Datei prüfen ob vorhanden!



<< |< 1 2 >| >> 15 Einträge, 2 Seiten
leissi
 2007-03-13 16:52
#75023 #75023
User since
2005-07-06
84 Artikel
BenutzerIn
[default_avatar]
Hallo,

habe mal eine Frage,

angenommen ich habe eine Datei die viele Daten beinhaltet, aber ich möchte aus diesen Daten nur diesen einen checken ob der in der Datei vorhanden ist.

Beispiel:

Datei x hat folgenden Inhalt

nnnnn
mmmmm
mmmmm
mmmmm
Restore Database

So jetzt möchte ich aber nur prüfen, ob "Restore Database" in der Datei enthalten ist.

Habt ihr Vorschläge?

Vielen Dank für die Hilfe

Gruss

Leissi
renee
 2007-03-13 17:01
#75024 #75024
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#!/usr/bin/perl

use strict;
use warnings;

my $file = '/path/to/file';
my $check = 'Restore Database';

open my $fh,'<',$file or die $!;
while( my $line = <$fh> ){
if( $line =~ /\Q$check\E/ ){
print "ist enthalten\n";
last;
}
}
close $fh;
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/
leissi
 2007-03-13 17:24
#75025 #75025
User since
2005-07-06
84 Artikel
BenutzerIn
[default_avatar]
Hallo,

erstmal vielen Dank für die schnelle Antwort.

Aber ich bekomme keinen Wert zurück.

Danke und Gruss

leissi
renee
 2007-03-13 19:03
#75026 #75026
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Was meinst Du mit "ich bekomme keinen Wert zurück"??
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/
leissi
 2007-03-14 08:46
#75027 #75027
User since
2005-07-06
84 Artikel
BenutzerIn
[default_avatar]
Also die Abfrage läuft durch ohne Fehler aber der print Befehl bringt nicht "ist enthalten!"

Woran kann das liegen?

Gruss

Leissi
bo
 2007-03-14 09:27
#75028 #75028
User since
2006-05-09
76 Artikel
BenutzerIn
[default_avatar]
hier nochmal renee's beispiel, etwas abgewandelt, ohne eine datei einzulesen

Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
use strict;
use warnings;

my $check = 'Restore Database';
while( <DATA> )
{
print "ist enthalten\n" if (/\Q$check\E/);
}

__DATA__
nnnnn
mmmmm
mmmmm
mmmmm
Restore Database

wenn du den code ausführst, siehst du, dass es funktioniert...

ist 'Restore Database' überhaupt in deiner datei enthalten?
leissi
 2007-03-14 15:31
#75029 #75029
User since
2005-07-06
84 Artikel
BenutzerIn
[default_avatar]
Hi,

jops das funktioniert!

Danke

Leissi
leissi
 2007-03-14 18:20
#75030 #75030
User since
2005-07-06
84 Artikel
BenutzerIn
[default_avatar]
Hi,

ich glaube ich habe da selbst das Problem ausgelöst:

Der String den ich suche lautet ja eigentlich vollständig

RESTORE DATABASE successfully processed

Das Problem ist das es UNICODE ist.

Wie kann ich das umsetzen?

Danke

Leissi
renee
 2007-03-14 18:26
#75031 #75031
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Perl achtet bei Regulären Ausdrücken auf die Groß- und Kleinschreibung - außer man sagt Perl, dass es egal sein soll:
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#!/usr/bin/perl

use strict;
use warnings;

my $file = '/path/to/file';
my $check = 'Restore Database';

open my $fh,'<',$file or die $!;
while( my $line = <$fh> ){
# set i-modifier to ignore case
if( $line =~ /\Q$check\E/i ){
print "ist enthalten\n";
last;
}
}
close $fh;
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/
leissi
 2007-03-19 09:41
#75032 #75032
User since
2005-07-06
84 Artikel
BenutzerIn
[default_avatar]
Hilfe bin am verzweifeln. Habe dieses Script geschrieben, ist noch nicht verfeinert aber er kann den Suchstring in der Datei finden. Aber er findet im angegebenen Verzeichnis keine aktuelle Datei, obwohl heute  früh aktuelle Dateien in das Verzeichnis stehen.

Kann mir einer sagen was ich falsch mache!!!!

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
 ############################################################################################

# 3 Block hier werden die Transactionlog-Dateien geprüft
 sub runSqlTrnCheck
   {
     #Überprüfung LogDatei-Verzeichnis

       
     
     # Flag, ob die Gesamtprüfung positiv ist.
     # 1 = nein, d.h. In mindestens einem Fall war keine aktuelle Backup-Datei vorhanden.
     # 0 = ja, d.h. es war stets eine aktuelle Log-Datei vorhanden.
     my $runSQLTrnCheck = 1;
     
     &printLogEntry ("INFO","Verzeichnischeck beginnt");  
     
     my $dir = '\\\\XXXXXXX\\f$\\Log\\MSSQL$XXXXXX\\SqlSrvJobs';
     opendir(DIR,$dir) or die $!; # Verzeichnis "öffnen"  
     print LogDatei $dir;
     my @verzeichnisse1 = grep{-l $dir .'/'.$_}readdir(DIR);
     my $bool_runSqlTrnCheck = 0; #0 = Nein
     for my $file(@verzeichnisse1)        
       {       
         if(existsActBackup($dir.'/'.$file,1))
           {    
              $bool_runSqlTrnCheck = 1;  #1 = Ja
              &printLogEntry ("DEBUG","LOG Dateien vorhanden" . $bool_runSqlTrnCheck . " LOG-Dateien gefunden!");
               &printLogEntry ("DEBUG", $file . @verzeichnisse1 . " LOG-Dateien im Verzeichnis " . $dir . " vorhanden!");
           }
           
        }
          if ($bool_runSqlTrnCheck == 1) # 1= Ja
            {
               &printLogEntry ("INFO","Es besteht in dem Verzeichnis mind. eine aktuelle LOG-Dateien!");
            }
          else      
            {
              &printLogEntry ("ERROR", "Es besteht in dem Verzeichnis" . $dir . "keine aktuelle LOGdatei!");
              $runSQLTrnCheck = 0;
            }
          unless($runSQLTrnCheck)
            {
              &printLogEntry ("ERROR", "LOG-Dateien unvollständig !!!!!");
            }
            else
           {
             &printLogEntry ("ERROR","Das zu prüfende Verzeichnis wurde nicht gefunden! Bitte prüfen!!");
             $runSQLTrnCheck = 0;
           }  # end of: if ( -e $bkupDirectory )
     return $runSQLTrnCheck   # Hier wird der ermittelte Rückgabewert aus der Subroutine übergeben!  
                       
   }# End of: sub runSqlTrnCheck  
   
 
 
#***************************  
# ++++++++++++++++SubRoutinen++++++++++++++++++++++++++++

# Subroutine1 BackupCheck-Zeitstempel

# Hier wird geprüft ob aktuelle Datei vorliegt oder nicht
# return:
#  0 = Die überprüfte Datei ist nicht aktuell genug
#  1 = Die überprüfte Datei ist aktuell genug
 sub existsActBackup
  {
    my ($file,$max_age) = @_;
    my $tmpValue = 0;
    #print LogDatei $tm;
    my $age = (time - (stat($file))[10]) / (60 * 60 * 24);
    if ($age < $max_age)
      {    
        $tmpValue = 1;
        &printLogEntry ("INFO","Aktuelle Dateien vorhanden!");
        &printLogEntry ("INFO","file  stat($file)");
      }
    else
      {  
        $tmpValue = 0;    
      }  
    return $tmpValue;
  };
\n\n

<!--EDIT|leissi|1174290123-->
<< |< 1 2 >| >> 15 Einträge, 2 Seiten



View all threads created 2007-03-13 16:52.