Pages : 1
#1 Le 12/02/2014, à 21: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, à 21: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, à 21:58
- tiramiseb
Re : Utilisation de "diff"
Salut,
Les options "-c" ou "-u" de diff peuvent éventuellement t'aider.
Voir son man...
Sébastien Maccagnoni - https://www.maccagnoni.eu - https://www.domotego.com
Hors ligne
#3 Le 12/02/2014, à 22: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, à 12: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, à 12: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, à 12:12)
Sébastien Maccagnoni - https://www.maccagnoni.eu - https://www.domotego.com
Hors ligne
#6 Le 14/02/2014, à 12:14
- tiramiseb
Re : Utilisation de "diff"
Tu peux peut-être aussi faire quelque chose avec "diff -y"...
Sébastien Maccagnoni - https://www.maccagnoni.eu - https://www.domotego.com
Hors ligne
#7 Le 14/02/2014, à 12: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.
Sébastien Maccagnoni - https://www.maccagnoni.eu - https://www.domotego.com
Hors ligne
#8 Le 14/02/2014, à 16: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, à 18: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, à 19:50
- tiramiseb
Re : Utilisation de "diff"
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".
Sébastien Maccagnoni - https://www.maccagnoni.eu - https://www.domotego.com
Hors ligne
#11 Le 15/02/2014, à 01:27
- aduxas
Re : Utilisation de "diff"
ah zut, en effet.... Merci.
Hors ligne
#12 Le 18/02/2014, à 17: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
Pages : 1