Jans Weblog

Persönliche Gedanken und Geschichten von Jan Theofel

« 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.

Jans Technik-Blog © 2004 - 2013 by Jan Theofel - Medien- und Werbedaten - Impressum - Datenschutz