2016-08-15 2 views
-2

J'ai essayé de trouver un moyen de faire des comparaisons de fichiers avec grep où j'ai aussi la sortie du premier fichier que j'essaie de comparer.sortie de grep pour inclure la sortie du fichier recherché

Les fichiers que j'ai sont des listes de plugins pour Jenkins, et j'essaye de compiler rapidement une liste de différences entre toutes les instances de Jenkins. La sortie de la ligne de commande Jenkins donne un nom court, un nom long, une version du plugin. Ainsi, le format est quelque chose dans la ligne de:

SupPlugin SuperPlugin 1.6 (1.8) 

J'ai environ 8 cas Jenkins, et peut tirer la liste des plug-ins. Ce que je dois faire est de trouver des incohérences dans lesquelles les plugins sont installés. J'ai joué avec grep et diff pour essayer de sortir ce dont j'ai besoin et de le stocker afin que je puisse le regarder et mettre à jour les serveurs si nécessaire.

La commande grep J'est

grep -v output1.txt output2.txt output3.txt > list.txt 

La question que j'ai avec ce que tout cela donne une puissance de 1 par rapport à 2 et 1 par rapport à 3, il ne sort pas ce que 1 était. Je voulais obtenir la sortie de la ligne courante dans grep quand elle trouve une discordance, donc, fondamentalement, je veux obtenir une liste de 1 ainsi que 2 et 3 afin que je puisse comparer les versions.

J'ai également essayé d'utiliser diff et boucle à travers chaque fichier pour créer un diff. Comme ce sont essentiellement des ensembles, je me dis que si je finis par essayer d'utiliser un diff je devrais boucler 1 contre le reste, puis 2 contre le reste, puis 3, ect ... jusqu'à ce que j'aie créé un fichier qui a tout des différences, mais alors je devrai traiter ce fichier pour enlever les doublons et changer le format pour être un peu plus lisible.

Existe-t-il un moyen d'amener Grep à faire ce que je pense, ou une meilleure façon d'utiliser diff pour obtenir le résultat que j'essaie d'obtenir?

+0

(Non Bien sûr pourquoi "grep" est impliqué (votre ligne grep manque une regex.) Si vous voulez juste voir si les fichiers sont désynchronisés, vous pouvez faire quelque chose comme: sum output1.txt output2.txt output3.txt Si toutes les sommes de contrôle sont les mêmes, il est très probable que les fichiers sont les mêmes. cul?) –

+0

Je n'ai pas besoin de savoir si les fichiers sont identiques ou non, car je sais qu'il y aura des différences. Ce dont j'ai besoin, c'est d'une liste de différences avec ce qui était différent du fichier original que je compare. grep me donne en fait la plupart de la sortie que je voudrais, mais n'inclut pas la sortie de output1.txt. Donc, j'obtiens les différences trouvées dans 2 et 3 de 1, mais pas la ligne de 1 qui était différente. – JonC

Répondre

0

Pas vraiment sûr sur le contenu des fichiers que vous souhaitez comparer mais empreintes 'sdiff -s la différence de deux fichiers, voici la syntaxe:

$ sdiff -s file1 file2 

Hope this helps,