Question formatage de la sortie diff


J'ai 2 fichiers que je veux différer. Le fichier B est produit en ajoutant une nouvelle ligne au fichier A. Je veux mettre en évidence les données ajoutées en utilisant diff.

Je voudrais éviter d'imprimer les caractères '>' et les '10a11,14' de la sortie ci-dessous.

Lire les pages de manuel de diff Je peux voir que vous pouvez spécifier la mise en forme du résultat (LFMT) mais j'ai du mal à produire quelque chose d’utile.

Pourriez-vous aider à supprimer les caractères dont je n’ai pas besoin?

Cordialement

AFG

   diff --left-column A.txt  B.txt

   10a11,14
   > TXT :   some text
   >         some text
   >         some text
   >         some text

4
2018-02-15 09:13


origine




Réponses:


Il y a deux façons simples de le faire, vous pouvez soit analyser la sortie de diff ou vous pouvez utiliser comm.

  • diff fileA fileB | grep '>' | sed 's/> *//'

  • comm -13 fileA fileB


5
2018-02-15 09:51



ça marche bien! Merci beaucoup! - Abruzzo Forte e Gentile
diff gère également le -u (format unidiff), c'est plus facile pour les yeux. - vonbrand


Bien que plus de frappe que juste en utilisant comm, ce qui suit fournit une démonstration du --GTYPE-group-format options:

diff --unchanged-group-format="" --new-group-format="%>" A.txt B.txt

Cette commande n'imprimerait que ces lignes dans B.txt et pas dans A.txt. La première option supprime les lignes communes. Il n'y a pas besoin d'utiliser --changed-group-format (aucune ligne ayant des valeurs différentes dans chaque fichier) ou --old-group-format (tout en A.txt est aussi dans B.txt).


4
2018-02-15 23:09