web-dev-qa-db-fra.com

Comment puis-je produire la différence entre 2 fichiers?

Mon dossier se compose des éléments suivants; grossièrement:

username:username:username:username:username 

La ligne ci-dessus continue à environ 600 caractères.

J'utilise la commande awk afin de l'utiliser comme argument dans une requête API/HTTP envoyée depuis la ligne de commande.

J'utilise mon script pour obtenir une liste des comptes d'utilisateurs qui me suivent, et toutes les 24 heures environ, en comparant la liste d'origine sur mon disque dur à la liste des noms d'utilisateurs nouvellement sortie (et faisant écho à qui ne me suit plus. Je vais devoir encapsuler ma logique dans une boucle en utilisant bash .. tester chaque nom d'utilisateur.

Mon script actuel:

user=$(awk -F: '{ print $1 }' FILE)  # Grab $User to use as an argument.  
following=$(exec CURRENT_FOLLOWERS) # Outputs the new file

echo "X amount of users are following you on 78B066B87AF16A412556458AC85EFEF66155"  

          SAVE CURRENT FOLLOWERS TO NEW A FILE.  


if [[ DIFFERENCE IS DETECTED ]] ; then    

          echo -ne "$User NO LONGER FOLLOWING YOU\r"

   else echo -ne "This user is following you still.\r"
fi

Ma question est;
Comment puis-je afficher la différence entre 2 fichiers?

11
Ben

L'utilitaire que vous recherchez est diff. Jetez un œil au manuel pour plus de détails.

9
schaiba

Étant donné deux fichiers contenant des listes d'utilisateurs non triés, par exemple.

In file1:
    userD
    user3
    userA
    user1
    userB

et

In file2:
    user3
    userB
    userX
    user1

puis pour obtenir une liste simple des utilisateurs dans file1 mais pas dans file2, tu peux faire

$ comm -23 <(sort file1) <(sort file2)
userA
userD

et de même pour obtenir les utilisateurs dans file2 mais pas dans file1

$ comm -13 <(sort file1) <(sort file2)
userX

Si les fichiers de liste sont déjà triés, ceux-ci peuvent être simplifiés en comm -23 file1 file2 et comm -13 file1 file2 respectivement.

13
steeldriver

La meilleure commande pour voir la différence dans le contenu des fichiers serait

vim -d file1 file2
6
vipin kumar

diff [options] from-file to-file

diff compare le contenu des deux fichiers from-file et to-file. Vous pouvez spécifier le -i option qui ignore les changements de casse; considérer l'équivalent des majuscules et des minuscules.

Pour plus d'informations, vous pouvez consulter ce lien: http://www.computerhope.com/unix/udiff.htm ou vous pouvez consulter la page de manuel.

3
Thushi

vous pouvez essayer les mêmes fenêtres que la commande fc sous Unix et Linux, c'est-à-dire diff <file_new> <file_old> commande.

Aligner avec +++ ou --- devant eux ont changé et un sans +'s et -'s n'a pas changé

Lignes avec - le signe est supprimé du nouveau fichier mais il existait dans l'ancienne version

Lignes avec + le signe est ajouté à partir du nouveau fichier mais il n'existait pas dans l'ancienne version du fichier

notation Linux

Linux utilise > et <

> signifie la ligne de l'ancien fichier < signifie la ligne du nouveau fichier qui est modifiée dans l'ancien fichier

2
Abhimanyu Aryan

Choisissez vimdiff pour Afficher les différences entre deux, trois ou quatre versions d'un même fichier.

0
SHW