Wörter in Dateien ersetzen: rpl anstatt sed

Kleiner Tipp für alle, die für sed keine Zeit oder eine andere Ausrede haben: rpl.
Der pythonische Helfer für nicht allzu tägliche Aufgaben, ersetzt Wörter oder Wortteile in Dateien.

Bevor zu Mistgabeln gegriffen wird: Nein, sed ersetzt es nicht. Bei weitem nicht.
Es kommt aber ohne RegEx aus.

Für zwischendurch ein super Helfer. Ein bischen RegEx oder die sed Basics sollten dennoch bekannt sein.
Dabei fallen die mahnenden Blicke durchaus in die eigene Richtung.

Python wird vermutlich schon installiert sein, weitere Abhängigkeiten gibt es nicht. Daher gilt für Debian und Konsorten:

apt-get install rpl

Um dem Post etwas Länge Information beizubringen, die relativ kleine man-page als Code für den Abschluss:

SYNOPSIS
     rpl [-LhiwbqvsRepfdt] [-xSUFFIX] "old_string" "new_string" "target_file ..."

DESCRIPTION
     Basic usage is to specify two strings and one or more filenames or directories on the command line.  The first string is the string to replace, and the second string is the replacement string.

     -h, --help
             A short help text.

     -L, --license
             Show the license and exit.

     -xSUFFIX
             Search only files ending with SUFFIX, e.g.  “.txt”.  May be specified multiple times.

     -i, --ignore-case
             Ignore the case of old_string.

     -w, --whole-words
             Make old_string match only on word boundaries.

     -b, --backup
             Move the original files to filename~ before replacing them.

     -q, --quiet
             Quiet mode.

     -v, --verbose
             Verbose mode.

     -s, --dry-run
             Simulation mode, no files are changed.

     -R, --recursive
             Recurse into subdirectories.

     -e, --escape
             Expand escape sequences in old_string and new_string.  Examples of escape sequences are ‘\n’ (new-line), ‘\t’ (tab), ‘\x42’ (hexadecimal number 42), ‘\033’ (octal number 033).

     -p, --prompt
             Prompt for confirmation before replacing each file.

     -f, --force
             Ignore errors when trying to restore permissions and file ownership.

     -d, --keep-times
             Keep modification times when replacing files.

     -t, --use-tmpdir
             Use a temporary directory for storing temporary files, usually the value of the environment variable TMPDIR.  The default is to put temporary files in the same directory as the file being modified.

     -a, --all
             Do not ignore files and directories starting with .

5 Antworten auf “Wörter in Dateien ersetzen: rpl anstatt sed

  1. Sebastian

    Sed kommt auch ohne regex aus, wenn man keine braucht. Einfach | statt / nehmen.

    sed „string/mit/lauter/§““$&$&/(%zeichen/die/sonst()voll\/kompliziert/zu/escapen/wären|ersetzen/durch/das/hier|g“ ~/bla.txt

    rpl hat natürlich trotzdem seine Berechtigung, aber gerade in Skripten muss die zusätzliche Abhängigkeit von Python und rpl nicht unbedingt sein.

    1. André P. Autor

      Oh, berechtigte Frage: Python 2.
      Kann auch mit 2to3 „konvertiert“ werden, schaut jedenfalls auf den ersten Blick (!) so aus.

      Ich habe schon ewig nicht mehr vor einer Kiste ohne Python gesessen, irgendwo war es dann immer eine Abhängigkeit. Aber ja, es kann durchaus nicht installiert sein, daher das kleine Wort „vermutlich“.

      Grüße (du Minimalist! ;-) )

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.