J'ai deux fichiers que j'essayais de comparer avec diff. Les fichiers sont générés automatiquement et présentent un certain nombre de lignes qui ressemblent à:
.*Generated Date \+\:.*
3 Réponses :
Selon la spécification , Vous semblez utiliser un DIFF code> Ne prend pas en charge les expressions régulières, et il n'a pas de commutateur
-i code>. p>
non standard de diff code> avec des extensions non standard. La manière dont ces extensions non standard fonctionnent, doivent être décrites dans la documentation de tout autre type
diff code> que vous utilisez. P>
J'utilise GNU DIFF 2.8.1. C'est non-standard?
GNU DIFF 2.8.1 est une version très courante utilisée par de nombreux systèmes d'exploitation GNU / *, tels que Linux. Si la boîte à outils GNU ne peut pas être considérée comme une norme, je ne sais pas ce que vous pouvez. Voir gnu.org/software/diffutils/manual/#Specified-lines :/ A> pour les documents (rares) sur le commutateur -i.
Très intéressant ... Je n'ai pas pu trouver une référence de documentation, mais une petite expérimentation a révélé que: p>
␠ * code> et . * code> a fonctionné si zéro-ou-personne est ok pour vous li>
- Comme vous l'avez dit,
␠ + code> ne fonctionne pas. Non plus ␠ {1,} code> ... mais \ {1, \} code> travaille fort> li>
- Mise à jour:
␠ \ + code> fonctionne aussi! LI>
ul>
( ␠ code> représente un caractère d'espace, qui ne s'est pas présenté). P>
J'utilise GNU DIFF de GNU Diffutils 2.8.1. P>
man Diff code> et info diff code> n'a pas expliqué la syntaxe RE. P>
J'espère que cela aide. P>
Mise à jour: j'ai trouvé une brève section dans Man Grep Code>: P>
Expressions régulières de base vs étendues h3>
dans les expressions de base régulières les méta-caractères?, +, {, |, (et)
perdre leur signification spéciale; Utilisez plutôt les versions backslashed \?
\ +, \ {, \ |, \ (, et \). p>
blockQuote>
Donc, je suppose que c'est à l'aide de la syntaxe de la regex de base. p>
HM! J'utilise exactement la même version de GNU DIFF, il s'agissait donc d'une bonne vérification de la santé mentale. J'ai changé par regex un peu, et lo-and-voici, tu as raison! Le problème est que cela semble briser horriblement sur le ":". Je vais éditer mon message original pour décrire le problème.
OK, voici ce que dit la source GNU DIFF.
re_set_syntax (RE_SYNTAX_GREP | RE_NO_POSIX_BACKTRACKING);
Re votre ":" Problème: Je n'ai pas eu d'idée de savoir pourquoi, mais essayez (a) utiliser [:] pour voir si cela échappe à tout effet spécial, même si les barres anti-retour ne l'ont pas fait, ni (b) utilisent. Pour faire correspondre n'importe quoi à cette position si vous n'êtes pas inquiet pour les faux positifs ... juste un coup de poignard dans le noir ...