Fassungen von sed
die die -i
für die Bearbeitung einer Datei an Ort und Stelle in eine temporäre Datei schreiben und die Datei dann umbenennen.
Alternativ können Sie auch einfach ed
. Zum Beispiel, um alle Vorkommen von foo
a bar
in der Datei file.txt
können Sie tun:
echo ',s/foo/bar/g; w' | tr \; '\012' | ed -s file.txt
Die Syntax ist ähnlich wie bei sed
, aber sicher nicht genau dasselbe.
Auch wenn Sie keine -i
Unterstützung sed
können Sie ganz einfach ein Skript schreiben, das die Arbeit für Sie erledigt. Anstelle von sed -i 's/foo/bar/g' file
könnten Sie Folgendes tun inline file sed 's/foo/bar/g'
. Ein solches Skript ist einfach zu schreiben. Zum Beispiel:
#!/bin/sh
IN=$1
shift
trap 'rm -f "$tmp"' 0
tmp=$( mktemp )
<"$IN" "$@" >"$tmp" && cat "$tmp" > "$IN" # preserve hard links
sollte für die meisten Verwendungszwecke ausreichend sein.