perlunity.de - PERL | JAVASCRIPT | PHP | MySQL | APACHE



#!/COMMUNITY

Members: 5374
davon online: 1
weitere User: 18
Click for quality!




12.02.2012 / 00:15

Community-Member werden   |   Paßwort vergessen   |   OnlineMonitor (1) Wer ist online ... OnlineMonitor starten !
     

 

Home


PERLscripts


PHPscripts


JAVAscripts


Hilfreiches


Links2www


Newscenter


Community


Interna




Community  »  Perl: Allgemeines Forum zur Themenübersicht Themensuche Themenansicht in Thread-Modus


BeitragSting suchen und Zeile ersetzten
Seitenanfang
Hi, folgendes Problem: Ich möchte zwei Dateien miteinander vergleichen. Wenn in einer Datei ein spezielles Wort gefunden wird soll die Zeile nach einer bestimmten Stelle durchsucht werden. (Die Zeilen sind gleich aufgebaut) Diese Stelle soll nun mit einer zweiten Datei verglichen werden. Gibt es eine Übereinstimmung, soll in der zweiten Datei die Zeile gelöscht werden.

Beispiel:

Datei 1:
dies,ist,eine,Beispiel,Zeile,eins
dies,ist,eine,gute,Zeile,acht
dies,ist,eine,schöne,Zeile,drei
dies,ist,eine,interessante,Zeile,neunzehn

Datei 2:
33451test13gute234ton

Durchsuche ich nun Datei eins nach dem Wort "acht". Es soll nun das Wort "gute" genommen werden und mit Datei 2 verglichen werden. Wird es dort gefunden soll die Zeile in Datei 2 gelöscht werden. Ne Idee wie ich sowas anstellen kann?

Danke und Gruß, Marcus

Datum: 24.03.2007-11:45

Beitragre: Sting suchen und Zeile ersetzten
Seitenanfang
Ich bin auch noch nicht so gut in Perl aber das was du vor hast sagt mir, dass das nur mit regulären ausdrücken geht!

Datum: 24.03.2007-12:06

Beitragre: Sting suchen und Zeile ersetzten
Seitenanfang
Für den zeilenweisen Zugriff auf die Dateien bietet sich Tie::File an.

use Tie::File;

my $filenameA = '...';
my $filenameB = '...';

tie(@fileA, 'Tie::File', $filenameA)
or die "Can't tie file!\n";

tie(@fileB, 'Tie::File', $filenameB)
or die "Can't tie file!\n";

Nun kannst du auf beide Dateien zeileneweise über die Arrays @fileA und @fileB zugreifen.

Dann durchläufst du in einer Schleife das Array @fileA und testest entweder mit der Funktion index() (oder wenn der Suchausdruck komplexer ist mit einer Regexp) ob der Suchstring enthalten ist, wenn ja dann speicherst du den aktuellen Index des Arrays @fileA zwischen um dann auf die gleiche Zeile im Array @fileB zugreifen zu können.

Löschen kannst du eine oder mehrere zusammenhängende Zeilen mit splice(), das heißt wenn du die Elemente aus den Array löscht, werden auch die entsprechenden Zeilen aus der Datei gelöscht.

Datum: 24.03.2007-15:55

-






-
-