Vi ist eine mächtige Kommandozeilen- Texteditor heimisch Unix. Obwohl es nicht möglich ist , um doppelte Zeilen Text mit einheimischen vi Befehle zu entfernen, ist es möglich , dies zu tun mit nativen Unix-Befehle und Shell-Skripte innerhalb des Editors . Things You
Unix oder Linux
brauchen anzeigen Weitere Anweisungen
Anleitung
1
Erstellen Sie eine Sicherungskopie der Datei: . W doc.bkup
2
Wenn es akzeptabel , um die Einträge in der Textdatei zu sortieren ist , zunächst mit dem Befehl sort :
: 1 , $ sort
Dieser Befehl sagt " verwenden Unix . Befehl sort auf den Linien 1 bis zum Ende der Datei "
3
Verwenden Sie die Unix uniq Befehl, um die doppelte Zeilen entfernen
: . ! 1, $ uniq
Dieser Befehl sagt " verwenden Sie den Befehl uniq Unix , um doppelte Zeilen aus der Linie 1 bis zum Ende der Datei zu entfernen. " die uniq Befehl funktioniert nur auf doppelte Linien, die einander benachbart sind und keine Leerzeilen zwischen ihnen.
4
Wisse, dass , wenn Sie nicht sortieren können Sie die Datei , müssen Sie ein awk-Skript verwenden . Awk ist eine Unix Text - Manipulation Dienstprogramm. Wenn mit vi verwendet , wird es die Durchführung anspruchsvoller Aufgaben, die vi allein nicht tun kann.
Kopieren Sie das folgende Skript in ein Textdokument und speichern Sie es mit dem Namen dup.sh im gleichen Verzeichnis wie die Text-Dokument .
# /bin /bashawk ' ($ 0 in a) { a [ $ 0] ; print} '
Dieses Skript sagt " . finden sich einzigartige Linie und ausdrucken "
< br > 5
aus der Unix-Kommandozeile , machen den dup.sh Skript ausführbar mit dem Befehl:
chmod + x dup.sh
6
entfernen nonconsecutive doppelte Zeilen aus innen vi mit dem folgenden Befehl :
: . " . laufen dup.sh Skript von Linie 1 bis zum Ende der Datei " 1, $ /dup.sh
Dieser Befehl sagt
7
Speichern Sie die Datei mit dem Befehl
: . w