Thread Ersetzen von Benutzernamen (4 answers)
Opened by nikster77 at 2006-02-08 01:01

nikster77
 2006-02-08 01:01
#62743 #62743
User since
2006-02-08
26 Artikel
BenutzerIn
[default_avatar]
Hallo miteinander.
Ich habe folgendes Problem:

Ich moechte in einem Textfile bestimmte Namen ersetzen, also ueberall wo z.B. W.Maier, T.Mueller, etc. steht moechte ich den voll ausgeschriebenen Namen einsetzen.
Das sind einige Namen...

Ich habe mir also gedacht ich koennte die Namen in eine Hashtabelle speichern (aus einem anderen File relativ einfach mit sed generiert).

Hier nun mein Ansatz:

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
#!/usr/bin/perl -w

   # Dateiname ermitteln
   $dateiname = $ARGV[0];  # der Skriptname steht in $0
   @zeilen = ();

# Hashtabelle erstellen und umkehren
%my_addresses_hash = (
"armin.mueller" => "amueller",
"thorsten.mustermann" => "tmustermann",
"klaus.meier" => "kmeier",
);
%reverse_my_addresses_hash = reverse %my_addresses_hash;
@reverse_my_addresses_array = %reverse_my_addresses_hash;

#Die zu suchenden/ersetzenden Werte werden getrennt
@search = keys %reverse_my_addresses_hash;
@replace = values %reverse_my_addresses_hash;

   # Datei lesen
         open (DATA, "$dateiname") || die "konnte die Datei nicht oeffnen\n";
         #Solange noch etwas in der Datei steht, fuehre sed-Aktion aus
         while (<DATA>)
         {
         s/$search/$replace/g;
         ##Die geaenderten Dateien werden in einem neuen Array gespeichert.
         push (@content, $_);
         }
         #Die Datei wird nach der Bearbeitung geschlossen.
         close (DATA);
         #Die Datei wird zum schreiben geoeffnet
         open (WRITE, ">$dateiname") || die "konnte Datei nicht beschreiben\n";
         #Die Datei wird mit dem Inhalt des Arrays ueberschrieben.
         print WRITE @content;
         ##die fertige Datei wird geschlossen.
         close (WRITE);


Funktioniert leider nicht, ich bin aber auch nicht so fit in perl um zu sagen warum...
koennte mich jemand vielleicht direkt mit der Nase draufstossen?

Danke vielmals\n\n

<!--EDIT|esskar|1139361602-->

View full thread Ersetzen von Benutzernamen