Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 12/02/2014, à 20:07

Tha Tawa'S

Utilisation de "diff"

Salut les scripteurs !

J ai 2 fichiers et je voudrais les comparer.

fichier1 :

Bloc1
information1
information2 : yes

Bloc2
information1
information2 : yes
... (il faut imaginer 50 blocs)

fichier2 :

Bloc1
information1
information2 : no

Bloc2
information1
information2 : yes
... (il faut imaginer 50 blocs)

Il n y a que "yes" ou "no" qui change.
Je lance 'diff fichier1 fichier2' et il me dit quelle lignes sont differentes mais je dois chercher a quels bloc il appartient !
Donc  je voudrais pouvoir récupérer les 3 lignes ( a partir de "Bloc" jusqu'à "information :yes")

Donc si vous avez une solution, ca serait cool !

Dernière modification par Tha Tawa'S (Le 12/02/2014, à 20:08)


Si tu tapes ta tete contre une cruche et que ca sonne creux... ce n est peut-etre pas la cruche qui est creuse....

Hors ligne

#2 Le 12/02/2014, à 20:58

tiramiseb

Re : Utilisation de "diff"

Salut,

Les options "-c" ou "-u" de diff peuvent éventuellement t'aider.

Voir son man...

Hors ligne

#3 Le 12/02/2014, à 21:26

Tha Tawa'S

Re : Utilisation de "diff"

oui j ai deja cherche de ce coté la... sans succes, sauf si je ne sais pas m en servir ......
J ai aussi essayé -C et -U et -y ....
Bref, j ai besoin d un coup de main !!


Si tu tapes ta tete contre une cruche et que ca sonne creux... ce n est peut-etre pas la cruche qui est creuse....

Hors ligne

#4 Le 14/02/2014, à 11:04

Tha Tawa'S

Re : Utilisation de "diff"

Pas d'idées ???


Si tu tapes ta tete contre une cruche et que ca sonne creux... ce n est peut-etre pas la cruche qui est creuse....

Hors ligne

#5 Le 14/02/2014, à 11:12

tiramiseb

Re : Utilisation de "diff"

sebastien@amaretto:~/toto$ diff -c3 a b
*** a   2014-02-14 11:10:47.363079080 +0100
--- b   2014-02-14 11:10:53.371078854 +0100
***************
*** 1,6 ****
  Bloc1
  information1
! information2 : yes
  
  Bloc2
  information1
--- 1,6 ----
  Bloc1
  information1
! information2 : no
  
  Bloc2
  information1

Là tu as bien le nom du bloc, au début des lignes citées, avec la ligne différente préfixée par "!"...

sebastien@amaretto:~/toto$ diff -u3 a b
--- a   2014-02-14 11:10:47.363079080 +0100
+++ b   2014-02-14 11:10:53.371078854 +0100
@@ -1,6 +1,6 @@
 Bloc1
 information1
-information2 : yes
+information2 : no
 
 Bloc2
 information1

Et là pareil, d'une manière plus succinte...

Dernière modification par tiramiseb (Le 14/02/2014, à 11:12)

Hors ligne

#6 Le 14/02/2014, à 11:14

tiramiseb

Re : Utilisation de "diff"

Tu peux peut-être aussi faire quelque chose avec "diff -y"...

Hors ligne

#7 Le 14/02/2014, à 11:15

tiramiseb

Re : Utilisation de "diff"

Tu as donc déjà utilisé les solutions que je te donnes.
Les solutions que je te donne répondent au besoin que tu exprimes (voir à quel bloc ça appartient, grâce au fait que le nom de bloc est 3 lignes avant).

Si ça ne répond pas à ton problème, c'est que tu n'as pas bien exprimé ton problème.

Hors ligne

#8 Le 14/02/2014, à 15:15

Tha Tawa'S

Re : Utilisation de "diff"

Impec !
Merci.


Si tu tapes ta tete contre une cruche et que ca sonne creux... ce n est peut-etre pas la cruche qui est creuse....

Hors ligne

#9 Le 14/02/2014, à 17:49

aduxas

Re : Utilisation de "diff"

diff -B 3 fic1 fic2

réduit le volume de sorties (n'imprime que les lignes qui précedent)

Hors ligne

#10 Le 14/02/2014, à 18:50

tiramiseb

Re : Utilisation de "diff"

aduxas a écrit :
diff -B 3 fic1 fic2

réduit le volume de sorties (n'imprime que les lignes qui précedent)

Tu es sûr que tu ne confonds pas avec grep ?

C'est grep qui imprime "les trois lignes précédentes" avec l'option "-B".

Avec diff, "-B" = "--ignore-blank-lines".

Hors ligne

#11 Le 15/02/2014, à 00:27

aduxas

Re : Utilisation de "diff"

ah zut, en effet....  Merci.

Hors ligne

#12 Le 18/02/2014, à 16:54

Postmortem

Re : Utilisation de "diff"

Salut,
Une version en gawk :

awk 'BEGIN{ RS=""; FS="\n" }
{ bloc[ARGIND,FNR]=$0 }
END{ for (i=1; i<=FNR; i++) { if (bloc[1,i]!=bloc[2,i]) printf ("%s\n---\n%s\n\n", bloc[1,i], bloc[2,i]) }}' fic1 fic2

Mot' a dit : « Un Hellfest sans Slayer, c'est comme une galette-saucisse sans saucisse ! »

Hors ligne