Falk: TXT-File Abschnittweise auslesen

Hallo,

ich suche eine Möglichkeit mittels eines scriptes bestimmte Daten in einer TxT auszulesen. Ungefähr so:

$schlagwort
mail@user.de
EndeMarker

$schlagwort2
user@mail.de
EndeMarker

$schlagwort
ma@ils.de
EndeMarker

...

Dabei sollte das script nur die Mailadressen rausfiltern, die mit dem Schlagwort übereinstimmen.

Viele Grüße,
Falk

  1. Hi,

    ich suche eine Möglichkeit mittels eines scriptes bestimmte Daten in einer TxT auszulesen.

    Was ist dein Problem dabei? Wir sollen dir ja wohl nicht das ganze Script schreiben, oder?

    Grüße Andres Freund

    --
    ss:) zu:) ls:} fo:) de:] va:) ch:| n4:& rl:° br:^ js:( ie:% fl:( mo:|
  2. Hallo,

    wie wäre es denn so:

    $schlagwort|mail@user.de
    $schlagwort2|user@mail.de
    $schlagwort|ma@ils.de

    Nun liest du die Datei zeilenweise ein, überprüfst, ob sie mit dem
    entsprechenden Schlagwort beginnt. Wenn ja Aktion blabla ausführen,
    wenn nein, nächste Zeile auslesen.

    Gruß Markus

    --
    alles wird gut...
    1. Hallo,

      danke für die schnelle Antwort.
      @Markus genau in dieser Form habe ich es schon probiert. Nur leider haperts am script - irgendwo habe ich einen Fehler drin, denn er liest die Datei so ein, das wenn er das Schlagwort findet - egal in welcher Zeile - er mir nur die jeweils letzte Zeile in der TXT-File ausgibt (Demnach die zuletzt eingelesene email-adresse).
      @Andreas: Nein, aber über eine kleine Hilfestellung, bzw. Idee eurerseits würde ich mich schon freuen ;-)

      Hier mein script (- wie gesagt, er liest es zwar aus, aber er kann die Zeilen, bzw. emailadressen nicht voneinander unterscheiden, deswegen suche ich die Möglichkeit die Sachen mit Markierungen aus dem File zu lesen.)

      (In jeder Zeile des TXT-Files steht etwas in der Form 'hallo|user@mail.de')

      open (ADRESSE, "<$txtfile");
      flock (ADRESSE, LOCK_EX) or "Fehler beim sperren der Datei $txtfile $!";
      @LINES = <ADRESSE>;

      Eintraege durchsuchen, Trennzeichen entfernen

      foreach $eintraege (@LINES){
      ($line1,$line2)=split(/|/,$eintraege);
      }

      Prüfen ob das Schlagwort vorhanden ist

      foreach $wert ($line2){
      if ($schlagwort eq $line2) {
      print "$line1";
      }
      }
      flock (ADRESSE, LOCK_UN);
      close ADRESSE;

      Viele Grüße Falk

      1. Moin Moin !

        Dein Script hat technische und logische Fehler.

        Beseitige die technischen zuerst:

        #!/usr/bin/perl -w
        use strict;

        sollten die ersten zwei Zeilen des Scripts sein. Beseitige alle Warnungen und Fehlermeldungen.

        Dann überlege, wann wo und wie welche Variable auf welchen Wert gesetzt wird.

        Alexander

        --
        Nein, ich beantworte keine Fragen per eMail. Dafür ist das Forum da.
        Today I will gladly share my knowledge and experience, for there are no sweeter words than "I told you so!"
      2. Hi,

        @Andreas: Nein, aber über eine kleine Hilfestellung, bzw. Idee eurerseits würde ich mich schon freuen ;-)

        1. Ich heiße Andres ;-).
        2. Dann poste dein Script nächstesmal direkt, hellsehen ist so anstrengend.

        Du solltest dein Script mal -w und use strict laufen lassen. Dann enteckst du einige Fehler schneller.

        flock (ADRESSE, LOCK_EX) or "Fehler beim sperren der Datei $txtfile $!";

        Benutze doch einen Shared lock, wenn du nur die Datei ausliest, dann können mehrere lesende Programme auf die Datei zugreifen.

        foreach $eintraege (@LINES){
        ($line1,$line2)=split(/|/,$eintraege);
        }

        Du überschreibst nach jeder Zeile die Variablen line11 und line2.

        foreach $wert ($line2){
        Du übergibst foreach einen Skalar? Was für einen Sinn soll das haben? Warum prüfst du nicht in der oberen foreach Schleife, ob die line1 den gesuchten Wert enthält?

        --
        ss:) zu:) ls:} fo:) de:] va:) ch:| n4:& rl:° br:^ js:( ie:% fl:( mo:|
        1. Hallo zusammen,

          Danke für die Antworten. @Andres: sorry... in der Hast hab ich glatt einen Buchstaben dazuaddiert.
          Ich werde jetzt erstmal die Fehler im script beseitigen und habe jetzt selber schon eine Idee wie es dann weitergeht...Danke allen.

          Gruß Falk

          Thema/Beitrag geschlossen.