Come eliminare linee duplicate in un file di testo con VI
Vi è un potente editor di testo da linea di comando, nativo per Unix. Anche se non esistono comandi nativi di vi per questo scopo, è possibile ottenere lo stesso risultato utilizzando la combinazione di comandi Unix e script di shell all'interno dell'editor.
Istruzioni
1.
Eseguire un backup del file.
: w doc.bkup
2.
Se è possibile, per ordinare le voci del file di testo, utilizzare prima il comando sort:
: 1, $ sort
In questo modo si applica "il comando Unix sort sulle linee 1 alla fine del file."
3.
Utilizzare il comando Unix uniq per rimuovere le righe duplicate.
: 1, $ uniq
In questo modo si applica "il comando Unix uniq per rimuovere le righe duplicate dalla linea 1 alla fine del file."
Il comando uniq funziona solo su linee duplicate che sono consecutive, le gli une alle altre senza vuote tra di loro.
4.
Sappiate che, se non è possibile ordinare il file, si dovrà utilizzare uno script awk.
Awk è linguaggi per la manipolazione dei dati testuali. In accoppiata con VI, eseguirà compiti complessi che vi da solo non può fare.
Copiare il seguente script in un documento di testo e salvarlo con il dup.sh nome nella stessa directory del documento di testo.
#! / bin / bash
awk '!($0 in a) {a[$0];print}'
Questo script permette di "trovare ogni linea unica e di stamparla."
5.
Dalla riga di comando Unix, rendere eseguibile dup.sh script con il comando:
chmod + x dup.sh
6.
Rimuovere le righe duplicate, senza aver applicato il comando sort, rixhiamando, all'interno del vi, per tutte le righe, lo script appena salvato.
: 1, $ / dup.sh!
7.
Salvare il file con il comando:
: w
Note:
È possibile utilizzare il comando:
sort-u
È possibile eliminare le righe non consecutive con il seguente comando da linea, all'interno della shell:
awk '($ 0 in a) {a [$ 0];} print!' Sort.txt> sort2.txt
Il file sort2.txt conterrà le voci univoche
Tags: vi, vim
- Login o registrati per inviare commenti