6741
Goto Top

aus Textseite bestimmte Zeile herrauskopieren und ein Teil ersetzen oder löschen

Hallo,

ich muss aus einem sehr langen Text Teile kopieren und ersetzen oder etwas löschen.

Die Teile sind immer im "sdfsdfasfasdfasfd" Stil also wenn ich ein Tool hätte was mir diese Zeile im Semikolon herrauskopiert und dann noch einen Teil löscht würde mir das sehr sehr helfen. Es sind Scanndaten mit ca 600 bis 1000 Einträgen / Zeilen die ich wöchentlich filtern muss.

Ich hoffe mir kann einer helfen ...

Danke Schön !

Content-Key: 24311

Url: https://administrator.de/contentid/24311

Printed on: April 26, 2024 at 08:04 o'clock

Member: CouchCoach
CouchCoach Jan 23, 2006 at 21:00:55 (UTC)
Goto Top
Sind die Daten in einer Text Datei? Oder kommt da so Zeile für Zeile und jeweils eine Datei rein?
Wo sind die Textphrasen die eingefügt werden sollen?
Ansonsten ist sowas eigentlich mit ein bisschen VB in Word ruckizucki erledigt.

Grüße
Mitglied: 6741
6741 Jan 23, 2006 at 21:20:32 (UTC)
Goto Top
Hi,

CouchCoach,

das glaub ich dir sofort, leider kann ich kein VB. Aber erkenne das es sehr sehr nützlich ist.

Die Daten liegen immer in einer Datei und die Zeile im Semikolon ist am Anfang immer gleich, aber wenn man eine Variable setzen könnte wäre das extrem gut.

Also "abc" immer herrauskopieren und in eine neue TextDatei einfügen, oder in die Zwischenablage, aber bei 600 bis 1000 Zeilen könnte es etwas langsam werden. abc wäre eine variable die man abfragen könnte.
Member: CouchCoach
CouchCoach Jan 23, 2006 at 21:27:58 (UTC)
Goto Top
Probier mal folgendes,

kannst du die Ersetzung von Hand in Word vornehmen? d.H. ich meine kannst den Text mit STRG-H suchen und ersetzen?
Wenn ja könntest du das mit dem Makro Rekorder in Word aufnehmen (Extras->Makro->aufzeichnen)
Jetzt hast schon den fertigen VB Code für suchen und ersetzen von Code. Jetzt nur noch in bisschen customizing und den Code ein paar mal oder in Schleifen angeordnet, fertig!!!

Versuch es erstmal so mit dem Makro Rekorder und anschließend was noch unklar ist posten.

Grüße und gute Nacht erstmal
Member: netstorm
netstorm Jan 23, 2006 at 23:09:59 (UTC)
Goto Top
Hallo,

für solche Sachen bietet sich eine Scriptsprache wie PERL recht gut an. Das iat auch mit 1000 Zeilen nicht überfordert. Wenn Du daran interesse hast, dann schreib nochmal, dann kann ich dir noch ein paar Tips geben.

CIAO Thorsten
Mitglied: 6741
6741 Jan 24, 2006 at 07:20:39 (UTC)
Goto Top
Hi Thorsten,

mir ist jede Sprache recht die mir helfen kann.

Wie schon erklärt muss ich immer die Zeile
"( hier könnte mann eine Variable abfragen ) SADADW1223dee4rr" abfragen
alles was hinter dem gleichen Anfang steht, ändert sich. Und diese Zeilen muss ich herrauskopieren. Am besten in eine neue Textdatei.
Member: netstorm
netstorm Jan 25, 2006 at 13:15:07 (UTC)
Goto Top
Hallo,

sorry, daß ich jetzt erst schreibe, aber eine fette Angina hat mich ans Bett genagelt.

Also ich schätze mal Du benutzt Windows. Dann mußt Du natürlich noch einen Perl-Interpreter installieren. Einen für Windows findest Du unter http://www.activestate.com/Products/ActivePerl/
Den hab ich allerdings selbst noch nicht installiert. Aber ich denke die haben ne gute Dokumentation.

Folgender Code sollte deine Aufgabe dann erfüllen:
Textdatei öffnen - Zeilenweise auslesen - Passende Zeilen in deine andere Datei schreiben

(EK1) bitte durch < ersetzen
(EK2) bitte durch > ersetzen
ZEILENANFANG durch den Anfang der Zeilen ersetzen, die du in der anderen Datei haben willst

open(SOURCE, "data.txt");  
open(TARGET, "> filtered_data.txt");  
while($line=(EK1)SOURCE(EK2))
{
  if($line =~ m/^ZEILENANFANG/)
  {
     print TARGET $line;
  }
}

close (SOURCE);
close (TARGET);

Zur Erklärung:
open öffnet eine Datei. Mit > wird eine Datei überschrieben (bei TARGET z.B.). Wenn man stattdessen >> nimmt wird die Datei zum Anhängen geöffnet.

Die while-Schleife nimmt sich jede einzelne Zeile der Datei vor solange bis er am Ende der Datei angekommen ist.

Die if-Abfrage ist das Kernstück. In der Variablen $line wird nach dem regulären Ausdruck, der zwischen den beiden / steht, durchsucht. Wird der Ausdruck erfüllt gibts true, wenn nicht false. Das ^ sagt, das die Zeile mit der folgenden Zeichenkette beginnen muß. Also in diesem Fall würde sowohl die Zeile:
ZEILENANFANGdwg3737gr
als auch
ZEILENANFANG327tew7qgd3

erkannt. Nicht aber z.B.
32rg3gew
oder
ZEIL3248heqw

Wird der Ausdruck erfüllt wird die Zeile in die neue Datei geschrieben. Ist die Datei abgearbeitet, werden beide Dateien geschlossen.

Wenn Du noch fragen hast, nur her damit...

CIAO Thorsten
Mitglied: 6741
6741 Jan 26, 2006 at 07:55:10 (UTC)
Goto Top
Hi Thorsten,

danke dir, ich habe auch 11/2 Tage gelegen und komme jetzt erst wieder dazu.

Du schreibst, dass ich (EK1) bzw (EK2) ersetzen soll. Sorry jetzt noch dumm gefragt, warum ??
Die data.txt ist die Ausgangsdatei, in die filtered_data.txt sind alles gefundenen Datensätze die mit ZEILENANFANG anfangen.

Eine weitere Frage wäre ich möchte danach, oder auch sofort aus den gefundenen Zeilen genau eine Kombiniation aus Buchstaben und Zeichen rausnehmen.

zb. : ZEILENANFANGasfdsfw4fsdfsdfasf4abg;dasdad

Hier müsste aus jeder Zeile das abg; gelöscht werden.

Vorab erstmal dankeschön und ich erkenne was man alles machen kann und werde mich wohl mal mehr damit beschäfitgen.

Aber was interessant ist ist sicher auch die Frage, welche Sprache nimmt man ...

Ach was ich grade noch sehe, was ist wenn der Ausdruck den ich suche so aussieht

"ZEILENANFGANGasdadasd234342asdaabg;addsadadaasd"

jetzt darf die Zeile nur vom Anfang des Semikolons gelesen werden und dann nur bis zum Ende des Zemikolons und wie oben beschreiben das abg; ( zb) herrausgefilter / gelöscht weren.

DANKE Dir
Member: netstorm
netstorm Jan 26, 2006, updated at Mar 29, 2023 at 23:52:15 (UTC)
Goto Top
Hi,

Du schreibst, dass ich (EK1) bzw (EK2)
ersetzen soll. Sorry jetzt noch dumm
gefragt, warum ??

Wenn ich in diesem Forum eine Spitze öffnende Klammer mit direkt folgendem Text schreibe, dann erkennt er das als HTML-Tag und alles danach verschwindet. An dieser Stelle ist es aber wichtig, daß SOURCE ohne Leerzeichen von Spitzen Klammern umschlossen wird. Deshalb diese Ersetzungssache.

Die data.txt ist die Ausgangsdatei, in die
filtered_data.txt sind alles gefundenen
Datensätze die mit ZEILENANFANG
anfangen.

Ganz genau...

Eine weitere Frage wäre ich möchte
danach, oder auch sofort aus den gefundenen
Zeilen genau eine Kombiniation aus
Buchstaben und Zeichen rausnehmen.

zb. :
ZEILENANFANGasfdsfw4fsdfsdfasf4abg;dasdad

Hier müsste aus jeder Zeile das abg;
gelöscht werden.

Also hab ich das jetzt richtig verstanden, daß Du in dem genannten Fall in der filtered_data.txt folgenden Eintrag haben willst:

ZEILENANFANGasfdsfw4fsdfsdfasf4dasdad

Wenn das so ist, dann machst Du folgende kleine Änderung in deinem Code:

Ursprungscode:
    if($line =~ m/^ZEILENANFANG/)
    {
        print TARGET $line;
    }

Änderung:
    if($line =~ m/^ZEILENANFANG/)
    {
        $line =~ s/abc;//;
        print TARGET $line;
    }

s/abc;// ersetzt alle Vorkommen von "abc;" durch ""
oder anders gesagt:
s/A/B/ ersetzt alle vorkommen von A durch B

Vorab erstmal dankeschön und ich
erkenne was man alles machen kann und werde
mich wohl mal mehr damit beschäfitgen.

Freut mich. Für solche Auswertungsgeschichten ist Perl einfach ungeschlagen.

Aber was interessant ist ist sicher auch die
Frage, welche Sprache nimmt man ...

Welche Sprache man nimmt, hängt grundlegend von der Aufgabenstellung ab. Denn es gibt nicht nur verschiedene Sprachen, sondern auch verschiedene Gruppen von Sprachen, die für verschiedene Aufgaben besser oder schlechter geeignet sind.
Scriptsprachen wie Perl und Python
Funktionale Sprachen wie SML, OCaml oder Haskell
Imperative Sprachen wie Basic, C oder TurboPascal kleiner Version 6
Objektorientierte Sprachen wie C++, Java


Ach was ich grade noch sehe, was ist wenn
der Ausdruck den ich suche so aussieht

"ZEILENANFGANGasdadasd234342asdaabg;addsadadaasd"

jetzt darf die Zeile nur vom Anfang des
Semikolons gelesen werden und dann nur bis
zum Ende des Zemikolons und wie oben
beschreiben das abg; ( zb) herrausgefilter /
gelöscht weren.

Da muß ich jetzt zugeben, daß ich die Frage nicht verstanden habe. Muß es jetzt bis zum Semikolon oder ab dem Semikolon gelesen werden? Am besten ist, du sagst, was bei einer solchen Zeile nachher in der gefilterten Ausgabe stehen soll...

CIAO Thorsten
Mitglied: 6741
6741 Jan 26, 2006 at 11:43:11 (UTC)
Goto Top
Hi Thorsten,

es gibt Zeilen die sehen so aus:

Der Zeileanfang ist immer gleich.

"Zeilenanfangs6a7d67d7as67ds7darg;sdasdsdasdas"  

ich möchte alle Zeilen ab dem Semikolon mit dem selben Zeilenanfang bis zum Ende ( Semicolon ) auslesen und in die Testdatei speichern. Im einen weiteren Durchgang oder auch sofort etwas löschen, aus der gefilterten Zeile zb ( arg; ) muss komplett gelöscht werden.

Danach habe ich so ca 600 - 1000 Zeilen


Zeilenanfangs6a7d67d7as67ds7dsdasdsdasdas    ( arg; schon gelöscht )
Zeilenanfangsj42j424j32j42jj4j24j2j42j4j2j2j42j
Zeilenanfangsk2424j2i4j2j4jj23j42j4j24j2j4j3j24

usw ...

hoffe das ich es jetzt verständlich ausgedrückt habe .... sorry

danke dir ..
Member: netstorm
netstorm Jan 26, 2006 at 11:59:27 (UTC)
Goto Top
Hi Thorsten,

es gibt Zeilen die sehen so aus:

Der Zeileanfang ist immer gleich.

"Zeilenanfangs6a7d67d7as67ds7darg;sdasdsdasdas"

ich möchte alle Zeilen ab dem Semikolon
mit dem selben Zeilenanfang bis zum Ende (
Semicolon ) auslesen und in die Testdatei
speichern.

Das hab ich immernoch nicht verstanden, sorry. Das einzige Semikolon, das ich da sehe ist das hinter "arg".

Kannst Du vielleicht einen Auszug aus der Datei posten und was du als Ergebnis für diesen auszug erwartest?

Im einen weiteren Durchgang oder
auch sofort etwas löschen, aus der
gefilterten Zeile zb ( arg; ) muss komplett
gelöscht werden.

Nun das ist ja wie bereits beschrieben kein Problem...

CIAO Thorsten
Mitglied: 6741
6741 Jan 26, 2006 at 12:33:00 (UTC)
Goto Top
so jetzt muss ich mir erstmal kräftig ein Kaffee einschütten....

und mal sorry sagen ...

ich meine alles was im Anführungsstiche steht ..... ganz klein werd ....

man soll nicht 3 Dinge gleichzeitig tun .....
Member: netstorm
netstorm Jan 26, 2006 at 13:16:15 (UTC)
Goto Top
Ok, kannst wieder groß werden. Kann ja jedem mal passieren... Allerdings stellt sich mir jetzt noch folgende Frage:

Sieht deine Datei so aus:

"BLAeuwhiuhdwieuf;fewiubiuwe"  
"BLAfwiuehdwewffeuwzgwefuwe"  
"BLAdewiewuzfieuzhiuewhdieuwh"  

oder so:

"BLAewzudiweuf;wefhdiweuh  
BLAuewhfiehwfiuewhfuhewu
BLAdewihfeowuhfoewuoiewjf"  

CIAO Thorsten
Mitglied: 6741
6741 Jan 26, 2006 at 13:50:37 (UTC)
Goto Top
hi,

so wie im ersten Block, aber es könnte auch etwas vor und hinter den Anführungsstrichen stehen. Aber das darf nicht "gefiltert"


"BLAeuwhiuhdwieuf;fewiubiuwe" sdada  
asasdd " asasds "  "BLAfwiuehdwewffeuwzgwefuwe"  
"BLAdewiewuzfieuzhiuewhdieuwh" 98asd9asddddd  

interessant ist nur die Zeile zwischen den Anführungsstrichen mit dem Anfang "BLA*" bis zum ende, kommt eine andere Zeile interesssiert die nicht. Dies müssten Reihe für Reihe in eine text Date geschrieben werden. Und halt noch etwas gelöscht werden, man könnte eine variable setzen für, wie im Beispiel arg;.

kann nur mal wieder danke dir sagen ....
Member: netstorm
netstorm Jan 26, 2006, updated at Mar 29, 2023 at 23:53:14 (UTC)
Goto Top
hallo,

ok, jetzt wirds langsam kompliziert face-smile

Nehmen wir also mal das was du geschrieben hast:

"BLAeuwhiuhdwieuf;fewiubiuwe" sdada
asasdd " asasds " "BLAfwiuehdwewffeuwzgwefuwe"
"BLAdewiewuzfieuzhiuewhdieuwh" 98asd9asddddd

dann soll daraus folgendes werden in der filtered_data.txt (euf; rausgefiltert):

BLAeuwhiuhdwifewiubiuwe
BLAfwiuehdwewffeuwzgwefuwe
BLAdewiewuzfieuzhiuewhdieuwh

Richtig?

Wenn das der Fall ist, würde ich wiefolgt vorgehen:

Schritt 1: jedes " durch einen Zeilenumbruch ersetzen. Dann hätte man sowas:

BLAeuwhiuhdwieuf;fewiubiuwe
 sdada
 asasdd 
 asasds 
 
BLAfwiuehdwewffeuwzgwefuwe

 
BLAdewiewuzfieuzhiuewhdieuwh
 98asd9asddddd

Das bläst die Datei erstmal auf, da viele neue Zeilen dazu kommen. Danach würde ich dann das bereits geschriebene Script drauf anwenden. Dabit werden schonmal alle Zeilen die nicht mit BLA beginnen entfernt und die definierte Zeichenkette (z.b. euf;) entfernt.

Wenn ich das jetzt korrekt verstanden habe, sag nochmal bescheid und ich passe das alte Script daran an und poste es nochmal...

CIAO Thorsten
Mitglied: 6741
6741 Jan 26, 2006 at 16:44:44 (UTC)
Goto Top
Hi,

ja die Idee ist gut alles in eine neue Zeile zu schreiben.

Und alles was nicht mit BLA anfängt löschen ( eine abfrage als variable wäre super für BLA )

Dann den Eintrag arg; oder ähnlich zu löschen aus jeder zeile.

Ich habe Perl installiert, wenn du so nett wäre und mir kurz sagt, wie ich eine Datei schrebie bzw starte.
Habe mal etwas mit Java gemacht....

Danke schön ...
Mitglied: 6741
6741 Jan 26, 2006 at 18:29:59 (UTC)
Goto Top
ich habe die Überlegung mal per Hand an der datei durchgeführt.

Also allles was nach dem " kommt wird in eine neue Zeile geschrieben bis zum nächten " denn interessant ist ja der Eintrag zwischen den beiden Anführungsstrichen egal was vorher oder auch nachher kommt.

Wenn man jetzt die Zeilen hat würde ich gerne die Zeile löschen die kein amp; in der Zeile haben löschen.
Nachdem alle Zeilen stehen bleiben muss amp; aus der Zeile gelöscht werden.

asdaasdasd "asasdasdsadasdad-amp;-dsadas" sdfdfsdfs"sdfsdfs"sasas " saasdadads-amp;asasdasd"

wird dann:

asdaasdasd
asasdasdsadasdad-amp;-dsadas
sdfdfsdfs
sdfsdfs
sasas
saasdadads-amp;asasdasd

dann alle Zeilen ohne amp; löschen

asasdasdsadasdad-amp;-dsadas
saasdadads-amp;asasdasd

und jetzt amp; aus der Zeile löschen

asasdasdsadasdad--dsadas
saasdadads-asasdasd

fertig .......

diese Daten in eine neue Datei schreiben, dann kann ich damit weiter arbeiten .....

hoffe ich verwirre dich nicht zu sehr ..... denke aber so müsste es dann gehen ....

nochmals danke ... für deinen Einsatz .....
Member: netstorm
netstorm Jan 26, 2006 at 20:07:51 (UTC)
Goto Top
Wenn man jetzt die Zeilen hat würde ich
gerne die Zeile löschen die kein amp; in
der Zeile haben löschen.
Nachdem alle Zeilen stehen bleiben muss amp;
aus der Zeile gelöscht werden.

Ich dachte die Zeile soll mit was bestimmtem beginnen?!? Die beiden Zeilen, die bei dir jetzt am Ende rauskommen, fangen aber verschieden an. Wäre schon wichtig, das zu wissen, nach welchen Kriterien Zeilen jetzt behalten werden oder nicht. Ansonsten hab ich das Script fertig. Ist etwas umfangreicher geworden. Würde es daher gerne nur einmal Posten, nämlich wenn wir sicher sind, daß es auch paßt (Muß ja wegen der ollen Klammern immer noch ein wenig dran rumändern).

CIAO Thorsten
Mitglied: 6741
6741 Jan 26, 2006 at 23:58:22 (UTC)
Goto Top
Hallo,

ich hoffe das hat jetzt nicht so sehr verwirrt. Also alles was zwischen dem " " steht in eine neue Zeile schreiben. Dann alle Zeile die ein amp; haben stehen lassen und alle andere löschen.
Jetzt noch aus den restlichen Zeilen amp; löschen.

Die Version mit dem Anfag hat sich als nicht machbar herraus gestellt da der Anfang doch sehr lange gleich ist und dann auch noch variabel ist, so ist es besser wenn alles Zeile wie oben gefiltert werden.

danke ....
Member: netstorm
netstorm Jan 27, 2006 at 07:54:25 (UTC)
Goto Top
OK, werde das Script im Laufe des Tages fertig machen. Guck doch nochmal so gegen Mittag rein. Muß jetzt zu nem Meeting.

CIAO Thorsten
Member: netstorm
netstorm Jan 27, 2006 at 14:00:25 (UTC)
Goto Top
Hallo, also das angepaßte Script lautet wiefolgt:

$searchparam = "efg;";  

open(SOURCE, "data.txt");  
open(TEMP, "> preprocessed.txt");  
while($line=(EK1)SOURCE(EK2))
{
    $line =~ s/(")/\n/g;  
    print TEMP $line;
}
close (SOURCE);
close (TEMP);

open(SOURCE, "preprocessed.txt");  
open(TARGET, "> filtered_data.txt");  
while($line=(EK1)SOURCE(EK2))
{
    if($line =~ m/($searchparam)/)
    {
        $line =~ s/($searchparam)//g;
        print TARGET $line;
    }
}

close (SOURCE);
close (TARGET);

Auch hier (EK1) durch < und (EK2) durch > ersetzen (ist diesmal an zwei Stellen der Fall). Deinen "Auswahlparameter", also die Zeichenkette, nach der Zeilen ausgesucht werden sollen und die nachher aus der Zeile entfernt werden soll, schreibst Du in die Variable $searchparam einfach das efg; in dem Code oben durch die entsprechende Zeichenkette ersetzen.

Das Script schreibt zunächst die einzelnen Zeilen in eine neue Datei preprocessed.txt. Danach werden diese anhand des Parameters durchsortiert und entsprechend "bereinigt". In der filtered_data.txt findest Du dann die Ausgabe, mit der Du dann (hoffentlich) weiterarbeiten kannst. Noch Fragen?

Würde mich freuen, wenn dir das hilft und Du mir eine gute Bewertung geben würdest.

CIAO Thorsten
Mitglied: 6741
6741 Jan 27, 2006 at 14:08:41 (UTC)
Goto Top
Hi,

danke dir für die Arbeit die du dir gemacht hast, besser gesagt für das Verständniss mich zu verstehen.

Aber ich hoffe du kannst mir in ein paar Zeilen erkären wie ich das script in eine lauffähige perl datei bekommen.

Hoffe das war jetzt kein tiefschlag .....

danke schön ...
Member: netstorm
netstorm Jan 27, 2006 at 14:25:11 (UTC)
Goto Top
Hallo,

also unter der Voraussetzung, daß Du Perl installiert hast, ist das "relativ" einfach. Du machst eine Text-Datei, in die Du den Code reinschreibst (diese muß im gleichen Verzeichnis liegen, wie deine data.txt). Ich lasse meine Perlscripte immer auf .pl enden, ist aber sicher kein muß. Da Perl eine Interpretersprache ist (d.h. der Code wird nicht compiliert), mußt Du Perl jetzt nur noch mit dem Script füttern. Das geht am einfachsten über die Kommandozeile (ich hoffe die kennst Du und kennst dich damit ein wenig aus). Öffnen tust Du die über "Start > Ausführen" mit dem Befehl "cmd".

Hast Du diese Konsole offen, gehst Du in das Verzeichnis, in dem deine data.txt und das Script liegen. Dort gibst Du dann ein

"C:/Perl/perl script.pl"

wobei C:/Perl der Pfad ist in dem Du Perl installiert hast und script.pl die Datei, die das Script enthält.

CIAO Thorsten
Mitglied: 6741
6741 Jan 27, 2006 at 15:03:36 (UTC)
Goto Top
Hi,

das ich nicht erst compilieren muss gefällt mir, positiv für Perl !!!

Die Vorgehnsweise habe ich verstanden und ausgeführt......

Erster Test war nicht okay aber ich habe die Klammern um EK1 und EK2 weggenommen .....


SEHR GUT !!!!!!!!!!

BIN BEGEISTERT

Werde mir wohl ein Buch über Perl für Anfänger mal zulegen ....

Oder kennst Du einen guten Link


was müsste ich ändern, wenn man etwas vor jede Zeile bzw ans Ende ergänzen wollte?

RESPEKT UND DANKE

gerry
Mitglied: 8644
8644 Jan 27, 2006 at 15:06:15 (UTC)
Goto Top
@6741,

da wäre doch mal ne Bewertung fällig!

Psycho

Klug ist jeder - der eine vorher, der andere hinterher
Mitglied: 6741
6741 Jan 27, 2006 at 15:15:02 (UTC)
Goto Top
ZUR BEWERTUNG:

Für mich ist dieser Betrag reines Geld wert...... bzw Zeit und viel Arbeit spare ich damit ...

Also ist das nicht überbewertet sondern genau richtig.

Danke an Thorsten !!!
Mitglied: 8644
8644 Jan 27, 2006 at 15:16:32 (UTC)
Goto Top
Na dann gib ihm doch endlich die fünf Sterne!

Psycho

Klug ist jeder - der eine vorher, der andere hinterher
Mitglied: 6741
6741 Jan 27, 2006 at 15:35:39 (UTC)
Goto Top
hab ich doch schon ......


wusste nicht dass man jeden Betrag bewerten kann ...
Member: netstorm
netstorm Jan 27, 2006 at 20:36:07 (UTC)
Goto Top
Werde mir wohl ein Buch über Perl
für Anfänger mal zulegen ....

Also Buchmäßig kann ich dir Bücher von O'Reilly empfehlen. Da gibt es derer drei:
1) Einführung in Perl (ist ein Lama vorne drauf)
Das war mein erstes Perl-Buch

2) Programmieren in Perl (mit nem Dromeda drauf)
Hab ich nicht gelesen, aber beim durchstöbern des Inhaltsverzeichnisses bei Amazon macht es einen ganz guten Eindruck

3) Das Perl Kochbuch (mit nem Widder-ähnlichen Tier)
In diesem Buch gibts im wahrsten Sinne des Wortes "Rezepte". Es wird eine Frage gestellt und darauf die Lösung erklärt. Ist eher ne Referenz oder was zum Anregungen holen, wenn man eigentlich schon Perl kann. Wie in einem echten Kochbuch kann man auch bei diesen Rezepten immer ein wenig variieren.

Oder kennst Du einen guten Link

Recht nett geschrieben findest Du was unter http://www.tekromancer.com/
Sollte als erste Kost genügen, denn die O'Reilly Bücher sind i.A. nicht unbedingt günstig zu haben.

was müsste ich ändern, wenn man
etwas vor jede Zeile bzw ans Ende
ergänzen wollte?

Vor jede Zeile ist recht einfach. Bevor Du die bearbeitete Zeite mit "print TARGET $line" in die Datei endgültige Datei schreibst, fügst Du noch folgende Zeile ein:

$line = "ABC" . $line;  

Das hinten anfügen ist etwas schwieriger, da eine Zeile am Ende noch ein Steuerzeichen für den Zeilenumbruch hat. D.h. erst den Zeilenumbruch wegmachen und dann das Anzuhängende + einen Umbruch anhängen:

chomp($line);
$line = $line . "ABC\n";  

Also würde dein Code z.B. so aussehen:

...
$line =~ s/($searchparam)//g;
chomp($line);
$line = $line . "ABC\n";  
print TARGET $line; 
...

Freut mich, daß ich helfen konnte face-wink

CIAO Thorsten
Mitglied: 6741
6741 Feb 02, 2006 at 15:32:11 (UTC)
Goto Top
Danke Dir für die Unterstützung.

Sieht gut aus.

Gefällt mir immer besser ... ;>)

Etwas fällt mir wieder ein.

Ich möchte in einer Datei prüfen, ob in der ersten Zeile eine variable zb( http ) steht, wenn lassen wenn nicht muss die Zeile gelöscht werden.

Und dann müüsste die selbe Datei geprüft werden, ob sich am Ende ein "Leerzeile" befindet. Wenn ja löschen wenn nein dann ist alles okay.

Hoffe Du kannst mit helfen ...

Danke schön

PS: ich hab ein Posting offen, wo ich ein Perl Script suche welches aus einem Link den Quelltext der Webseite in eine Datei namens data.txt schreibt. Kennst so so etwas ?