Commande diff

Le
donutman
Bonjour,

je cherche à faire la différence entre deux fichiers qui n'écrirait
QUE la différence entre les fichiers.

Exemple : la comparaison entre

T1.log :
"Voici un ancien
fichier texte"

et

T2.log :
"Voici un ancien
fichier texte
et voici une nouvelle ligne"

ne devrait sortir que "et voici une nouvelle ligne"

Le problème :

Si je fais diff T1.log T2.log > diff.log
j'ai de nouveaux caractères '>' et '<' qui sont rajoutés en début de
ligne : "> et voici une nouvelle ligne"
Comment faire pour n'avoir que le texte brut ?

Merci d'avance

Pierre
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Thomas vO
Le #11177991
bonjour,

À (at) Thu, 3 Jul 2008 01:40:18 -0700 (PDT),
nous disait (told us):
Le problème :

Si je fais diff T1.log T2.log > diff.log
j'ai de nouveaux caractères '>' et '<' qui sont rajoutés en d ébut de
ligne : "> et voici une nouvelle ligne"
Comment faire pour n'avoir que le texte brut ?



peut-être avec un :
diff T1.log T2.log | sed "s/^[<>] //" > diff.log

--
Thomas vO -
donutman
Le #11178111
On 3 juil, 10:47, Thomas vO
bonjour,

À (at) Thu, 3 Jul 2008 01:40:18 -0700 (PDT),
nous disait (told us):

> Le problème :

> Si je fais diff T1.log T2.log > diff.log
> j'ai de nouveaux caractères '>' et '<' qui sont rajoutés en début de
> ligne : "> et voici une nouvelle ligne"
> Comment faire pour n'avoir que le texte brut ?

peut-être avec un :
diff T1.log T2.log | sed "s/^[<>] //" > diff.log

--
Thomas vO -


Bonjour,

oui c'est exactement ce que je cherchais à faire !
Merci beaucoup et bonne journée.

Pierre
Cyrille Lefevre
Le #11183501
Thomas vO a écrit :
bonjour,

À (at) Thu, 3 Jul 2008 01:40:18 -0700 (PDT),
nous disait (told us):
Le problème :

Si je fais diff T1.log T2.log > diff.log
j'ai de nouveaux caractères '>' et '<' qui sont rajoutés en début de
ligne : "> et voici une nouvelle ligne"
Comment faire pour n'avoir que le texte brut ?



peut-être avec un :
diff T1.log T2.log | sed "s/^[<>] //" > diff.log



Bonjour,

dans le cas présent, comm -13 T1.log T2.log est plus approprié.

-1 supprime les lignes uniquement dans T1.log
-2 supprime les lignes uniquement dans T2.log
-3 ... les lignes communes

Cordialement,

Cyrille Lefevre.
--
mailto:Cyrille.Lefevre-news%
supprimer "%nospam% et ".invalid" pour me repondre.
Olivier Miakinen
Le #11185421
Le 03/07/2008 22:56, Cyrille Lefevre a écrit :

peut-être avec un :
diff T1.log T2.log | sed "s/^[<>] //" > diff.log



dans le cas présent, comm -13 T1.log T2.log est plus approprié.

-1 supprime les lignes uniquement dans T1.log
-2 supprime les lignes uniquement dans T2.log
-3 ... les lignes communes



En effet. Et cela permet de vérifier par un « comm -23 T1.log T2.log »
qu'il n'y a pas eu de lignes supprimées.
Matthieu Moy
Le #11187791
Cyrille Lefevre writes:

Thomas vO a écrit :
bonjour,

À (at) Thu, 3 Jul 2008 01:40:18 -0700 (PDT),
nous disait (told us):
Le problème :

Si je fais diff T1.log T2.log > diff.log
j'ai de nouveaux caractères '>' et '<' qui sont rajoutés en début de
ligne : "> et voici une nouvelle ligne"
Comment faire pour n'avoir que le texte brut ?



peut-être avec un :
diff T1.log T2.log | sed "s/^[<>] //" > diff.log



Bonjour,

dans le cas présent, comm -13 T1.log T2.log est plus approprié.



Attention :

comm - compare two sorted files line by line

Et l'algo pour « reprendre » les parties identiques après une
différence n'est pas du tout le même selon si les fichiers sont triés
ou pas.

Sur des fichiers non-triés, on peut s'attendre à ce que comm fasse un
peu n'importe quoi. Si l'ordre n'importe pas,

comm <(sort T1.log) <(sort T2.log)

devrait faire l'affaire.

--
Matthieu
Publicité
Poster une réponse
Anonyme