Leser: 27
2010-09-18T18:43:02 NewtonZ4Wie funzt Suchen Ersetzen überhaupt?
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
58
<Extensions />
<q3:Method>Snapshot</q3:Method>
<q3:ResampleInterval>60</q3:ResampleInterval>
</ItemDetails>
<ItemCollection />
</ContextItem>
<ContextItem Type="Trace">
<Name>F_100005.DACA.PV</Name>
<ItemDetails xmlns:q4="http://honeywell.context.org/trace" xsi:type="q4:TraceItemDetails" version="1.0">
<Extensions />
<q4:TagID>F_100005.DACA.PV</q4:TagID>
<q4:Color>#0000A0</q4:Color>
<q4:Marker>square</q4:Marker>
<q4:Style>Solid</q4:Style>
<q4:Visible>true</q4:Visible>
<q4:Selected>false</q4:Selected>
<q4:TimeOffset>0S</q4:TimeOffset>
<q4:XAxis>false</q4:XAxis>
<q4:YAxis>false</q4:YAxis>
<q4:Minimum>0</q4:Minimum>
<q4:Maximum>100</q4:Maximum>
<q4:YRange>Auto</q4:YRange>
<q4:YCustomMaximum>0</q4:YCustomMaximum>
<q4:YCustomMinimum>0</q4:YCustomMinimum>
<q4:HistogramPlot>false</q4:HistogramPlot>
<q4:UseSecondaryXAxes>false</q4:UseSecondaryXAxes>
<q4:Interpolation>Default</q4:Interpolation>
</ItemDetails>
<ItemCollection>
<ContextItem Type="Tag">
<Name>F_100005.DACA.PV</Name>
<ItemDetails xmlns:q5="http://honeywell.context.org/tag" xsi:type="q5:TagItemDetails" version="1.0">
<Extensions />
<q5:ItemName>F_100005.DACA.PV</q5:ItemName>
<q5:Enumerated>false</q5:Enumerated>
<q5:MinimumConfidence>0</q5:MinimumConfidence>
<q5:NullValueReplacement>######</q5:NullValueReplacement>
<q5:Units />
</ItemDetails>
<ItemCollection>
<ContextItem Type="DataSource">
<Name>DefaultPHD</Name>
<ItemDetails xmlns:q6="http://honeywell.context.org/datasource" xsi:type="q6:DataSourceItemDetails" version="1.0">
<Extensions />
<q6:Name>DefaultPHD</q6:Name>
<q6:Type>PHD</q6:Type>
<q6:ServerName>PHD_HOST</q6:ServerName>
<q6:ServerPort>-1</q6:ServerPort>
<q6:BrowseServerName>PHD_HOST</q6:BrowseServerName>
<q6:BrowseServerPort>-1</q6:BrowseServerPort>
</ItemDetails>
<ItemCollection />
</ContextItem>
</ItemCollection>
</ContextItem>
</ItemCollection>
</ContextItem>
<ContextItem Type="Trace">
print "Dein Perl-Code hier."
Dein Code hier
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
#!/usr/bin/perl -w # Dateinamen festlegen my @dateien = ('SE1.XML' , 'SE2.XML'); # Suchtext eingeben my $suche = "F_100005.DACA.PV"; # Ersatztext eingeben my $ersetze = "F_100005.PV"; foreach $path (@dateien) { # Datei öffnen open (DATEI, "$path") || die ("konnte die Datei \"$path\" nicht öffnen. Fehler: $!"); @eingabe = <DATEI>; close DATEI; foreach (@eingabe) { # Erstzung vornhemen s/$suche/$ersetze/g; } # Datei zur Ausgabe öffnen open (OUT, ">$path") || die ("konnte die Datei \"$path\" nicht öffnen. Fehler: $!"); # Neue Textfassung ausgeben print OUT @eingabe; close OUT; }
->set_tag( 'html');
$root->children( 'para');
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
#!/usr/bin/perl use strict; use warnings; my $name_file='names.txt'; my $data_file='data.xml'; my $outp_file='data.out.xml'; # Einlesen der Namenspaare my %replace; open(my $nfh, '<', $name_file) or die "error open $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 "error open $data_file $!\n"; # Ausgabedatei öffnen open(my $ofh, '>', $outp_file) or die "error open $outp_file $!\n"; while(<$dfh>) { # Zeile durchsuchen und und Ersetzen $_=~s/$search_str/$replace{$1}/g; # Zeile ausgeben print $ofh $_; } close($ofh); close($dfh);
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
#!/usr/bin/perl use strict; use warnings; use XML::Twig; my $name_file='names.txt'; my $data_file='data.xml'; my $outp_file='data.out.xml'; my %replace; open(my $nfh, '<', $name_file) or die "error open $name_file $!\n"; while(my $line=<$nfh>) { chomp($line); $replace{$1}=$2 if($line=~/^\s*(.+?)\s*=>\s*(.+?)\s*$/); } close($nfh); my $twig=XML::Twig->new( pretty_print => 'cvs', twig_handlers => { _all_ => sub { $_->set_text($replace{$_->text}) if(exists($replace{$_->text})) } } ); $twig->parsefile($data_file); open(my $ofh, '>', $outp_file) or die "error open $outp_file $!\n"; $twig->print($ofh); close($ofh);
F_100005.DACA.PV => F_100005.PV
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
<ContextItem Type="Trace">
<Name>F_100005.DACA.PV</Name>
<ItemDetails xmlns:q4="http://honeywell.context.org/trace" xsi:type="q4:TraceItemDetails" version="1.0">
<Extensions />
<q4:TagID>F_100005.DACA.PV</q4:TagID>
<q4:Color>#0000A0</q4:Color>
<q4:Marker>square</q4:Marker>
<q4:Style>Solid</q4:Style>
<q4:Visible>true</q4:Visible>
<q4:Selected>false</q4:Selected>
<q4:TimeOffset>0S</q4:TimeOffset>
<q4:XAxis>false</q4:XAxis>
<q4:YAxis>false</q4:YAxis>
<q4:Minimum>0</q4:Minimum>
<q4:Maximum>100</q4:Maximum>
<q4:YRange>Auto</q4:YRange>
<q4:YCustomMaximum>0</q4:YCustomMaximum>
<q4:YCustomMinimum>0</q4:YCustomMinimum>
<q4:HistogramPlot>false</q4:HistogramPlot>
<q4:UseSecondaryXAxes>false</q4:UseSecondaryXAxes>
<q4:Interpolation>Default</q4:Interpolation>
</ItemDetails>
<ItemCollection>
<ContextItem Type="Tag">
<Name>F_100005.DACA.PV</Name>
<ItemDetails xmlns:q5="http://honeywell.context.org/tag" xsi:type="q5:TagItemDetails" version="1.0">
<Extensions />
<q5:ItemName>F_100005.DACA.PV</q5:ItemName>
<q5:Enumerated>false</q5:Enumerated>
<q5:MinimumConfidence>0</q5:MinimumConfidence>
<q5:NullValueReplacement>######</q5:NullValueReplacement>
<q5:Units />
</ItemDetails>
<ItemCollection>
<ContextItem Type="DataSource">
<Name>DefaultPHD</Name>
<ItemDetails xmlns:q6="http://honeywell.context.org/datasource" xsi:type="q6:DataSourceItemDetails" version="1.0">
<Extensions />
<q6:Name>DefaultPHD</q6:Name>
<q6:Type>PHD</q6:Type>
<q6:ServerName>PHD_HOST</q6:ServerName>
<q6:ServerPort>-1</q6:ServerPort>
<q6:BrowseServerName>PHD_HOST</q6:BrowseServerName>
<q6:BrowseServerPort>-1</q6:BrowseServerPort>
</ItemDetails>
<ItemCollection />
</ContextItem>
</ItemCollection>
</ContextItem>
</ItemCollection>
</ContextItem>
1 2 3
my $name_file='names.txt'; my $data_file='data.xml'; my $outp_file='data.out.xml';
1 2 3
my $name_file=shift(@ARGV) or die("NO Names File!"); my $data_file=shift(@ARGV) or die("NO Data File!"); my $outp_file=shift(@ARGV) or die("NO Output File!");
hello.pl names.txt data.xml data.out.xml
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";
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 58 59 60 61 62 63 64
#!/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'; # 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)!; # einlesen der Dateipfade open(my $pfh, '<', $path_file) or die "Fehler beim öffnen $path_file $!\n"; while(my $file=<$pfh>) { # Zeilenumbruch am Ende entfernen chomp($file); # überspringe alle Dateien, die nicht mit ".xml" enden next unless($file =~ /\.xml$/); # Namen für die alte Datei erzeugen (my $old_file=$file)=~s/\.([^.]+)$/.old.$1/; # nach schauen, ob es die Datei "$old_file" schon gibt. if(-f $old_file) { # Warnung ausgeben warn("Datei $old_file existiert, sie wird gelöscht!\n"); # Datei löschen unlink($old_file) or die("konnte $old_file nicht löschen!\n"); } #Datei umbenennen: rename($file, $old_file) or die("Fehler beim Umbenennen von $file nach $old_file $!\n"); # daten Datei öffnen open(my $dfh, '<', $old_file) or die("Fehler beim öffnen $old_file $!\n"); # Ausgabedatei öffnen open(my $ofh, '>', $file) or die("Fehler beim öffnen $file $!\n"); while(<$dfh>) { # Zeile durchsuchen und und Ersetzen $_=~s/$search_str/$replace{$1}/g; # Zeile ausgeben print $ofh $_; } close($ofh); close($dfh); } close($pfh); # fertig Meldung print "Fertig.\n";