Comment faire pour supprimer les lignes dupliquées dans VI

Vi est une ligne de commande puissant éditeur de texte originaire d'Unix. Bien qu'il ne soit pas possible de supprimer des lignes en double de texte avec des commandes vi indigènes, il est possible de le faire en utilisant natif commandes Unix et les scripts shell à l'intérieur de l'éditeur.

Choses que vous devez

  • Unix ou Linux

Instructions

  1. Faites une sauvegarde du fichier.

    : W doc.bkup
  2. Si elle est acceptable pour trier les entrées dans le fichier de texte, utilisez d'abord la commande de tri:

    : 1, $ sort!

    Cette commande dit "utilisez la commande de tri Unix sur les lignes 1 à la fin du fichier."

  3. Utilisez la commande uniq Unix pour éliminer les lignes en double.




    : 1, $ uniq

    Cette commande dit "utilisez la commande uniq Unix pour éliminer les lignes en double de la ligne 1 à la fin du fichier."
    La commande uniq ne fonctionne que sur les lignes en double qui sont adjacents les uns aux autres et ne pas avoir toutes les lignes vides entre eux.

  4. Sachez que, si vous ne pouvez pas trier le fichier, vous devrez utiliser un script awk. Awk est un utilitaire de manipulation de texte Unix. Lorsqu'il est utilisé avec vi, il va effectuer des tâches avancées qui vi seul ne peut pas faire.

    Copiez le script suivant dans un document texte et l'enregistrer avec le nom dup.sh dans le même répertoire que votre document texte.

    #! / Bin / bash
    awk '! (0 $ en a) {a [$ 0] -print}'

    Ce script dit "trouver chaque ligne unique et l'imprimer."




  5. De la ligne de commande Unix, rendre le script exécutable dup.sh avec la commande:

    chmod + x dup.sh
  6. Supprimez les lignes en double non consécutifs de l'intérieur vi avec la commande suivante:

    : 1, $ ./ dup.sh

    Cette commande dit "exécutez le script dup.sh de la ligne 1 à la fin du fichier."

  7. Enregistrez votre fichier avec la commande

    : W.

Conseils & Avertissements

  • Vous pouvez combiner le genre et les commandes uniq en utilisant sorte -u.You pouvez supprimer les lignes non consécutifs de la ligne de commande avec la commande "awk '! (0 $ en a) {un -print [$ 0]}' sort.txt gt; sort2.txt". Le sort2.txt de fichier tiendra les entrées uniques.
» » » » Comment faire pour supprimer les lignes dupliquées dans VI