Das beste Tool für die nicht interaktive direkte Bearbeitung von Dateien ist ex
.
ex -sc '%s/\(\.com\).*/\1/ | x' file.txt
Wenn Sie vi
einen 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.
-s
Aktiviert den unbeaufsichtigten Modus, um die ex
Stapelverwendung vorzubereiten . (Unterdrückung von Ausgabenachrichten ua)
-c
Gibt den Befehl an, der ausgeführt werden soll, sobald die Datei ( file.txt
in 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.
s
ist der Ersatzbefehl, mit dem Sie wahrscheinlich bereits vertraut sind. Es wird häufig in vi
und mit im Wesentlichen identischen Funktionen wie der s
Befehl 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) ex
Implementierungen können Sie auch eine zusätzliche -c
Option verwenden, z.
ex -sc '%s/\(\.com\).*/\1/' -c x file.txt
Dies wird jedoch von POSIX nicht benötigt.
Der x
Befehl wird beendet, nachdem Änderungen an der Datei geschrieben wurden. Im Gegensatz zu wq
"Schreiben und Beenden" wird x
in die Datei nur geschrieben, wenn der Puffer bearbeitet wurde. Wenn also Ihre Datei unverändert bleibt, bleibt der Zeitstempel erhalten.
.com
nur 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/Ubuntu
in Ihrer Liste hätten?