Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Commande diff

5 réponses
Avatar
donutman
Bonjour,

je cherche =E0 faire la diff=E9rence entre deux fichiers qui n'=E9crirait
QUE la diff=E9rence 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=E8me :

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

Merci d'avance

Pierre

5 réponses

Avatar
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 - <http://perso.enstimac.fr/~vanouden/>
Avatar
donutman
On 3 juil, 10:47, Thomas vO <vanouden+ wrote:
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 - <http://perso.enstimac.fr/~vanouden/>



Bonjour,

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

Pierre
Avatar
Cyrille Lefevre
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.
Avatar
Olivier Miakinen
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.
Avatar
Matthieu Moy
Cyrille Lefevre <cyrille.lefevre-news%
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