de fin de ligne agnostique diff?
Je suis en train de travailler sur un mac, avec quelques-uns assez vieux fichiers. Les différents fichiers ont été créés par les différents programmes, de sorte que certains d'entre eux à la fin avec \r (mac) et certains avec \n (unix). Je veux être en mesure d'exécuter des commandes comme diff, grep, etc. sur ces fichiers, mais ceux qui ont \r sont traités comme un géant de la ligne. personne ne sait d'une version de diff, grep, etc. qui fonctionne correctement avec toutes les nouvelles lignes?
ETA: je tiens également à être des utilitaires unix afin que je puisse les utiliser dans des scripts, emacs, etc...
Vous devez vous connecter pour publier un commentaire.
Comme Jay a dit, Diff'nPatch semble à ce que vous recherchez. Sinon, vous pouvez convertir tous vos '\r' des fins de ligne dans le '\n' dans une seule commande comme ceci:
ou
(Vous pouvez filtrer la liste des fichiers d'une certaine façon dans le dernier cas ou il sera appliqué à tous les fichiers dans tous les sous-répertoires.)
sed -ie 's/\r/\n/g' filename
produit les résultats souhaités alors quesed -ie 's/\r/\n/' filename
inséré un retour après chaque ligne. Je ne suis pas sûr de ce que la signification de ce personnage supplémentaire, mais cela a fonctionné pour moi.Si vous utilisez
diff -w
il ignore les espaces dans les fichiers, ce qui est probablement suffisant pour vos besoins.MODIFIER: viens de réaliser que j'ai mal lu le post la première fois et vous êtes actuellement à la recherche d'un diff qui va travailler avec
\r
les fins de ligne. Ma suggestion serait de convertir les fichiers avec quelque chose comme symétrie que peut convertir les fichiers vers un\n
format standard.EDIT 2: Viens de trouver quelque chose qui ressemble à ce que vous voulez - Diff'nPatch:
diff
marqué chaque ligne du fichier, comme la différence. J'ai comparé DOS / *X-Files.diff -uw
était le remède.La diff utilitaire fourni avec OSX Lion a une option 'bande-fuite-cr' qu'est-ce que vous voulez. Vous l'utilisez comme suit:
La commande dos2unix pourrait être utile pour la conversion de vos fichiers dans un format cohérent premier. Je crois qu'il est disponible pour à peu près toutes les plates-formes que vous pouvez penser et peut s'exécuter sur des lots de fichiers à la fois. Je crois qu'il y a un paquet disponible pour mac.
PHPStorm est diff de la vue "ignorer les espaces blancs" fonctionne, tout simplement. Automatiquement, il ignore les différences dans le retour chariot /EOL /saut de ligne /qu'est-ce-avez-vous. Vous pouvez perdre votre temps à jongler avec les arcanes des commandes unix ou autre, ou vous pourriez juste obtenir quelque chose qui fonctionne réellement et aller de l'avant avec la vie.
Oui, mes retours à la ligne sont \r, mais alors quoi? Arrr! Si le logiciel est trop stupides pour se rendre compte que \r == \n alors, je vais juste utiliser les différents logiciels que est assez intelligent.
PHPStorm est le seul logiciel qui a une diff outil "de travail" -- ce qui est ce que j'attends Mac logiciel pour faire. J'attends Mac logiciel pour travail juste. J'utilise un Mac donc je peux faire mon travail au lieu de l'apprentissage des arcanes les commandes du terminal à chaque tour, qui sont presque tous mal documenté, attend à ce que vous venez de comprendre la façon dont les commandes sont censés être formaté sans exemples clairs, de sorte que vous ne savez jamais si vous le faites mal ou si la commande tout simplement ne fonctionne pas, comme tous les autres logiciels malveillants. Prenez cet exemple de "l'homme diff":
OK, donc après avoir lu cela, je n'ai aucune idée de ce que cela signifie. Il n'y a pas d'exemple de son utilisation. Ce qui est "RE"? Il ne dit pas n'importe où.
Puis il y a ce petit bijou:
J'ai pu faire aucun sens que ce soit de ce passage. Qu'est-ce que la "entrée"? Est-il à la fois les fichiers ou seulement le fichier ou simplement le "de" fichier? Ce qui est "similaire" se référant à l'? Ce qui "est" dans la phrase, "GFMT 'est' LTYPE ou "changé""? Signifie-t-il "pourrait être remplacé par"? Si oui, alors pourquoi n'est-il pas "GFMT" dans les citations ou des crochets, etc.? Depuis, aucun exemple n'est donné, il n'y a aucun moyen de savoir; la documentation du libellé est totalement ambigu. Ce n' "GFMT peut contenir"... veut dire? Ne "contiennent" signifie que le texte en remplaçant l'acronyme GFMT peut contenir que? Sans un exemple clair qu'il est complètement inutile.
Pourquoi même pas la peine d'écrire une page de man, si vous allez faire en sorte énigmatique et ambigu, il est inutile à quiconque ne savez pas encore comment utiliser le logiciel, en fait? À ce stade, il n'est pas un manuel, c'est juste une page de référence rapide pour le gars qui a écrit le logiciel de sorte qu'ils peuvent se souvenir de la façon de l'utiliser. Je suppose qu'ils supposent que vous allez viens juste de lire le code source lui-même, si vous voulez savoir ce qu'il fait réellement.
Mon temps est précieux. Je préfère juste de payer de l'argent pour avoir un morceau de logiciel qui fonctionne correctement et dispose d'une documentation appropriée.
Parce que ces tous échoué:
...pas réussi à ignorer les caractères \r.
...pas réussi à ignorer les caractères \r.
...pas réussi à ignorer les caractères \r.
...pas réussi à ignorer les caractères \r.
...pas réussi à ignorer les caractères \r.
D'ailleurs s'ils étaient des caractères \n il a également omis lorsque l' \n ajout de caractères.
Où test.phtml ==
et rest.html ==
Le "diff" commande vous donne toujours quelque chose comme:
... fail!
J'ai utilisé la suite de la correction rapide, ce qui a des inconvénients (voir ci-dessous):
1: Faire un diff et de la liste uniquement les noms de fichiers
2: Ouvrir et enregistrer chaque fichier de la liste avec l'éditeur qui a été utilisé, cela va changer la ligne de terminaisons.
3: Faire régulièrement diff
Les inconvénients comprennent:
Cela a fonctionné pour moi:
Je suis sur OSX, et ont mélangé des fichiers à partir de OSX et windows.
Crédit: http://www.codealpha.net/514/diff-and-ignoring-spaces-and-end-of-lines-unix-dos-eol/
foo<new line>bar
etfoobar
, ne diriez-vous pas ceux qui sont différents?