« ESS mit SuSE 9.x und apache2 | Main | Mozilla Anzeige auch in Deutschland »

Suchen und Ersetzen in Dateien mit Perl

Hier mal das kürzeste Beispiel aus meiner Schulung, die ich gerade halte. Und sicher auch das Beispiel, mit dem größten Erklärungsbedarf:
#!/usr/bin/perl -i

while(<>)
{
  s/\r//g;
  print;
}
Was macht dieser Perl-Code? Genau: Textdateien mit \r\n als Zeilenumbruch (DOS, Windows) in eine Textdatei mit \n als Zeilenumbruch (Linux, Unix) konvertieren. Dazu muss das Skript nur mit perl convert.pl file [file2] [file3] [etc.] aufgerufen werden.
Die Funktionsweise ist eigentlich ganz einfach:
  1. Fangen wir mit der Erklärung von innen nach außen an: print; ohne jegliche Parameter schreibt einfach nur den Wert unserer Standardvariable $_.
  2. Die RegEx entfernt aus eben jenem $_ alle \r Elemente.
  3. while(<>) nimmt nun die erste Datei aus den Programmparametern und verwendte diese als Eingabe- und Ausgabedatei. Sind mehrere Dateien angegeben, werden diese nacheinander bearbeitet.
Ganz einfach, oder?

Geschrieben von Jan Theofel am 2.11.2004 um 18:44 Uhr (Permalink)
Abgelegt unter Perl

TrackBacks für »Suchen und Ersetzen in Dateien mit Perl«

TrackBack URL: http://www.theofel.de/mt-cgi/mt-tb.cgi/1165

4 Kommentare zu »Suchen und Ersetzen in Dateien mit Perl«

Hier mal das kürzeste Beispiel aus meiner Schulung, die ich gerade. Ich glaube hier fehlt was...?

1 | josef max | 17.02.2005 um 8:06

Hier mal das kürzeste Beispiel aus meiner Schulung, die ich gerade. DIE ICH GRADE WAS !!??

2 | josef max | 24.02.2005 um 10:08

Danke für den Hinweis. Das fehlte das Wort "halte". Siehe auch meinen Eintrag Perl-Schulung diese Woche.

3 | Jan Theofel | 26.02.2005 um 9:48

Noch kürze wäre #!/usr/bin/perl -pi.bak s/\r//g würde jdoch nicht mehr in eine angebene Datei schreiben sondern es in der Aktuellen ersetzen und die alte als bak datei speichern

4 | Icke | 1.09.2006 um 0:19

Schreib bitte Deine Meinung:

Kommentare werden moderiert und erscheinen daher ggf. zeitverzögert. Bitte nur themenbezogene Kommentare abgeben die sich auf diesen Eintrag beziehen.

ACHTUNG: Es gilt meine Anti-SPAM-Policy! Werbende Kommentare und SEO-Linkspam werden nicht freigeschaltet. Statt dessen sende ich eine Beschwerde an den Profiteur der Werbung.
Bei persönlichen Meinungen bitte keine Links zu kommerziellen Projekten sonder zu eurer privaten Seite.