122 votes

Comment puis-je ignorer les fins de ligne lors de la comparaison des fichiers ?

Je compare deux fichiers texte et j'obtiens le résultat suivant :

diff file1 file2 | grep 12345678

> 12345678
< 12345678

Comme vous pouvez le voir, la même chaîne existe dans les deux fichiers, et les deux fichiers ont été triés avec sort .

Les terminaisons de ligne doivent gêner ici (Windows vs. Unix).

Y a-t-il un moyen d'obtenir diff pour ignorer les fins de ligne sous Unix ?

11 votes

diff --strip-trailing-cr file1 file2 ?

1 votes

@RuslanOsmanov ça ressemble à une réponse, merci. En fait, c'est la même chose que -w ?

8 votes

Non, -w ignore les différences dans les espaces blancs, et "White space" characters include tab, vertical tab, form feed, carriage return, and space . Par exemple, diff a b montrera la différence pour `ligne` et <tab>line mais diff -w a b ne le fera pas

206voto

Ruslan Osmanov Points 13305

Utilisez le --strip-trailing-cr option :

diff --strip-trailing-cr file1 file2

L'option provoque diff pour supprimer le caractère de retour de chariot avant de comparer les fichiers.

10 votes

Merci. J'ai essayé d'utiliser diff -w qui ont donné des résultats similaires mais c'est la réponse la plus correcte.

0 votes

Cela montre encore une différence sur un changement entre le style de contreventement Allman et 1TBS.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X