Das beste Tool für die nicht interaktive direkte Bearbeitung von Dateien ist ex.
ex -sc '%s/\(\.com\).*/\1/ | x' file.txt
Wenn Sie vieinen Befehl verwendet haben und dieser mit einem Doppelpunkt beginnt, haben :Sie einen ex-Befehl verwendet. Natürlich sind viele der fortgeschrittenen oder "ausgefallenen" Befehle, die Sie auf diese Weise ausführen können, Vim-Erweiterungen (z. B. :bufdo) und sind nicht in den POSIX-Spezifikationen für definiertex , aber diese Spezifikationen ermöglichen ein wirklich erstaunliches Maß an Leistung und Flexibilität in nicht visuellen Bereichen Textbearbeitung (interaktiv oder automatisiert).
Der obige Befehl besteht aus mehreren Teilen.
-sAktiviert den unbeaufsichtigten Modus, um die exStapelverwendung vorzubereiten . (Unterdrückung von Ausgabenachrichten ua)
-cGibt den Befehl an, der ausgeführt werden soll, sobald die Datei ( file.txtin diesem Fall) in einem Puffer geöffnet wurde.
%ist ein Adressenspezifizierer, der 1,$- es bedeutet, dass der folgende Befehl auf alle Zeilen des Puffers angewendet wird.
sist der Ersatzbefehl, mit dem Sie wahrscheinlich bereits vertraut sind. Es wird häufig in viund mit im Wesentlichen identischen Funktionen wie der sBefehl von verwendetsed , obwohl einige der erweiterten regulären Funktionen je nach Implementierung variieren können. In diesem Fall wird von ".com" bis zum Ende der Zeile nur ".com" verwendet.
Die vertikale Leiste trennt die auszuführenden sequentiellen Befehle. In vielen (den meisten) exImplementierungen können Sie auch eine zusätzliche -cOption verwenden, z.
ex -sc '%s/\(\.com\).*/\1/' -c x file.txt
Dies wird jedoch von POSIX nicht benötigt.
Der xBefehl wird beendet, nachdem Änderungen an der Datei geschrieben wurden. Im Gegensatz zu wq"Schreiben und Beenden" wird xin die Datei nur geschrieben, wenn der Puffer bearbeitet wurde. Wenn also Ihre Datei unverändert bleibt, bleibt der Zeitstempel erhalten.
.comnur suchen möchten, anstatt alles nach und einschließlich des ersten/Zeichens zu entfernen ? Was wäre, wenn Sie eine URL wieen.wikipedia.org/wiki/Ubuntuin Ihrer Liste hätten?