(Antwort auf Bash)
Nein. Die Shell verarbeitet zuerst Umleitungen, die die Datei dann abschneiden. Erst dann wird cat
gestartet und es wird mit einer leeren Datei gearbeitet.
sponge
Das moreutils
Paket enthält ein Werkzeug, mit dem Sie Folgendes tun können:
cat somefile.txt | sort | uniq | sponge somefile.txt
Dieser Befehl kann vereinfacht werden ( UUOC entfernen ):
sort -u somefile.txt | sponge somefile.txt
Ohne müssen sponge
Sie in eine temporäre Datei schreiben, und wenn der Befehl erfolgreich ist, überschreiben Sie die Eingabedatei
tmpfile=$(mktemp) sort -u somefile.txt > "$tmpfile" && mv "$tmpfile" somefile.txt