TXT-File Abschnittweise auslesen
Falk
- perl
0 Andres Freund0 Markus Thomas0 Falk0 Alexander Foken0 Andres Freund0 Falk
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
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
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
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>;
foreach $eintraege (@LINES){
($line1,$line2)=split(/|/,$eintraege);
}
foreach $wert ($line2){
if ($schlagwort eq $line2) {
print "$line1";
}
}
flock (ADRESSE, LOCK_UN);
close ADRESSE;
Viele Grüße Falk
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
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?
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.