1 2 3 4 5 6 7 8 9
#!/usr/bin/perl foreach (<>) { chomp; s/ENGINE=MyISAM/ENGINE=InnoDB/; print $_."\n"; }
Quoteperl ./db_convert.pl dump.sql
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
#!/usr/bin/perl # Perl hat Hilfen die das Programmieren vereinfachen. # diese beiden Zeilen laden Pragmas (Spezielle Module) # die umfangreichere Fehlermeldungen machen. # Perl ist damit nicht mehr so tolerant # gerade wenn man anfängt kann perl mit seinen # Variationsmöglichkeiten eher stören als helfen. use strict; use warnings; # es ist immer sinnvoll Fehlermeldungen zu machen die("Bitte Dateinamen angeben!\n") if(!@ARGV) # Den übergeben Dateinamen holen my $file=$ARGV[0]; # Datei öffnen und fehlermeldung wenn es nicht geklappt hat # $! enthält die Meldung von Perl oder dem System open(my $fh, '<', $ARGV[0]) or die("Can't open $file ($!)\n") #foreach (<>) { # for ist hier schlecht, # denn es ließt gleich die gesamte Datei ein # und geht sie dann zeilenweise durch. # bei while wird immer nur eine Zeile gelesen, das spart RAM # die alte Zeile: my $old_line=''; # datei Zeilenweise einlesen while(my $new_line=<$fh>) { if($new_line=/<Suchstring>/) { # letztes Zeichen löschen $old_line=~s/.\n$/\n/; # ganze Zeile löschen $new_line=''; } print $old_line; $old_line=$new_line; } close($fh); # noch die letzte Zeile ausgeben print $old_line;
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 # Perl hat Hilfen die das Programmieren vereinfachen. # diese beiden Zeilen laden Pragmas (Spezielle Module) # die umfangreichere Fehlermeldungen machen. # Perl ist damit nicht mehr so tolerant # gerade wenn man anfängt kann perl mit seinen # Variationsmöglichkeiten eher stören als helfen. use strict; use warnings; # es ist immer sinnvoll Fehlermeldungen zu machen die("Bitte Dateinamen angeben!\n") if(!@ARGV) # Den übergeben Dateinamen holen my $file=$ARGV[0]; # Datei öffnen und fehlermeldung wenn es nicht geklappt hat # $! enthält die Meldung von Perl oder dem System open(my $fh, '<', $ARGV[0]) or die("Can't open $file ($!)\n") # die ganze Datei lesen. Kein Zeilentrenner. $/=undef; # alles in "$data" einlesen my $data=<$fh>; # Datei schließen close($fh); # alles "ENGINE=MyISAM" suchen # und durch "ENGINE=InnoDB" ersetzen $data=~s/ENGINE=MyISAM/ENGINE=InnoDB/gs; # alles <irgend ein zeichen>"\n"<irgendwas><SUCHSTRING><irgendwas>"\n" suchen # und durch "\n" ersetzen $data=~s/.\n.*?<SUSCHSTRING>.*?\n/\n/gs; print $data;
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
#!/usr/bin/perl use strcit; use warnings; use Tie::File; my $file=$ARGV[0] or die("No File defined!\n"); tie( my @data, 'Tie::File', $file ) or die "Can't open $file ($!)\n"; for my $pos ( reverse (0..$#data) ) { if($pos>0 and $data[$pos]=~/<SUCHSTRING>/) { $data[$pos-1]=~s/.\n/\n/; splice(@data,$pos,1); } } print join('',@data); untie(@data);