Thread Suchen / Ersetzen (25 answers)
Opened by NewtonZ4 at 2010-09-18 19:15

NewtonZ4
 2010-09-19 20:50
#141408 #141408
User since
2010-09-18
11 Artikel
BenutzerIn
[default_avatar]
So, es funktioniert schon mal grundsätzlich. Super!
Jetzt folgt das feintuning ;-)

Ich habe noch eingefügt, daß die alte Datei in .old umbenannt wird und die neue Datei den Namen der alten bekommt.

Als nächstes möchte ich über eine weitere .txt Datei Verzeichnispfade einlesen. In der Datei stehen Pfade zu Ordnern in der die Dateien jeweils bearbeitet, gespeichert und umbenannt werden. Die Datei path.txt und names.txt liegen in einem Ordner. Die Dateien data.xml, data.out.xml und data.old.xml liegen in Verzeichnissen die in der Datei path.txt hinterlegt sind
Und das bekomme ich nicht hin.

Code (perl): (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
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
#!/usr/bin/perl
use strict;
use warnings;

my $path_file='C:\Users\User0815\Desktop\Steinhaus\Perl\path.txt';
my $name_file='C:\Users\User0815\Desktop\Steinhaus\Perl\names.txt';
my $data_file='C:\Users\User0815\Desktop\Steinhaus\Perl\data.xml';
my $outp_file='C:\Users\User0815\Desktop\Steinhaus\Perl\data.out.xml';
my $old_file='C:\Users\User0815\Desktop\Steinhaus\Perl\data.old.xml';

# einlesen der Dateipfade
open(my $pfh, '<', $path_file) or die "Fehler beim öffnen $path_file $!\n";
my @Dateien = readdir(DIR);
foreach(@Dateien) {
  if($_ =~ /\.txt$/) {
    open(my $pfh,"$_") or die $!;

# einlesen der Namenspaare
my %replace;
open(my $nfh, '<', $name_file) or die "Fehler beim öffnen $name_file $!\n";
while(my $line=<$nfh>)
{
  chomp($line);
  $replace{$1}=$2 if($line=~/^\s*(.+?)\s*=>\s*(.+?)\s*$/);
}
close($nfh);

# erstellen der Suchliste
my $search_str=join('|', map{qr(\Q$_\E)}keys(%replace));
$search_str=qr!($search_str)!;

# daten Datei öffnen
open(my $dfh, '<', $data_file) or die "Fehler beim öffnen $data_file $!\n";
# Ausgabedatei öffnen
open(my $ofh, '>', $outp_file) or die "Fehler beim öffnen $outp_file $!\n";
while(<$dfh>)
{
  # Zeile durchsuchen und und Ersetzen
  $_=~s/$search_str/$replace{$1}/g;
  # Zeile ausgeben
  print $ofh $_;
}
close($ofh);
close($dfh);

# daten Datei umbenennen in old
rename($data_file, $old_file) or die "Fehler beim umbenenen Alt-Datei $data_file $!\n";

# outp Datei umbenennen in data.xml
rename($outp_file, $data_file) or die "Fehler beim umbenenen ind neue Data-Datei $data_file $!\n";

close $pfh;
  }
}

# fertig Meldung
print "Fertig.\n";

View full thread Suchen / Ersetzen