Come eliminare linee duplicate in un file di testo con VI

Vim

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

Francesco Dattolo | email: info[at]gnucms.org, info[at]francescodattolo.it | mobile: +39 328 84 59 794 | P.IVA 05800731217 | C.F.DTTFNC74A05I073V

Informativa sulla Privacy

Copyright © 2007-2011 Francesco Dattolo.

Creative Commons LicenseQuesto sito è pubblicato sotto una Licenza Creative Commons.
Il testo è disponibile secondo la licenza Creative Commons Attribuzione-Condividi allo stesso modo; possono applicarsi condizioni ulteriori.

Valid XHTML 1.0 Strict