François Meyer, au 2019-03-22 : > Je cherche à patcher un fichier sans rien lui retirer. > > Autrement dit, ajouter à un fichier les lignes d'un autre > fichier mais seulement celles qui n'y sont pas déjà. > > Il doit y avoir une option dans diff ou patch, mais je ne > trouve pas, et la seule solution (sale) que j'ai trouvée > consiste à effacer les lignes commençant par "-" dans le > fichier patch puis à appliquer le patch normalement sur le > fichier à incrémenter.
Bonjour François, Les programmes diff et patch ont été écrit dans une optique de génie logiciel, où retirer des lignes a autant d'importance que d'en ajouter. Filtrer le résultat du diff pour votre cas d'usage comme vous le faite n'a rien de bien choquant, tant que ce n'est pas pour mettre à jour du code source. :) Si vraiment vous voulez minimiser le nombre de commandes lancées par votre script, jetez un œil au manuel de diff(1), à partir de l'option -D, il semble qu'il y ait des options de formatage qui permette des manipulations intéressantes sur la sortie de diff. Notez toutefois que manipuler le formatage n'est pas compatible avec les options -u et -U. Je crains cependant que la lisibilité de votre script n'en pâtisse. Mais si vraiment les performances sont un problème, une réimplémentation en langage compilé (C, Rust, ...) du problème que vous voulez résoudre peut être une solution plus appropriée. À vous de voir... Amicalement, -- Étienne Mollier <etienne.moll...@mailoo.org> All opinions are my own.