diff
puis grep
pour le type de modification souhaité.
diff -u A1 A2 | grep -E "^\+"
Une approche similaire à https://stackoverflow.com/a/15385080/337172 mais, espérons-le, plus compréhensible et facile à modifier :
diff \
--new-line-format="%L" \
--old-line-format="" \
--unchanged-line-format="" \
A1 A2
La plupart des éléments ci-dessous sont copiés directement à partir de la réponse serverfault de @TomOnTime ici. En bas se trouve une tentative qui fonctionne sur des fichiers non triés, mais la commande trie les fichiers avant de donner le diff, donc dans de nombreux cas, ce ne sera pas ce qui est souhaité. Pour les différences bien formatées de fichiers non triés, vous trouverez peut-être les autres réponses plus utiles (merci à @Fritz pour l'avoir signalé) :
Afficher les lignes qui n'existent que dans le fichier a :(c'est-à-dire ce qui a été supprimé de a)
comm -23 a b
Afficher les lignes qui n'existent que dans le fichier b :(c'est-à-dire ce qui a été ajouté à b)
comm -13 a b
Afficher les lignes qui n'existent que dans un fichier ou dans l'autre :(mais pas les deux)
comm -3 a b | sed 's/^\t//'
(Attention :si le fichier a
a des lignes qui commencent par TAB, il (le premier TAB) sera supprimé de la sortie.)
REMARQUE :Les deux fichiers doivent être triés pour que "comm" fonctionne correctement. S'ils ne sont pas déjà triés, vous devez les trier :
sort <a >a.sorted
sort <b >b.sorted
comm -12 a.sorted b.sorted
Si les fichiers sont extrêmement longs, cela peut être assez lourd car cela nécessite une copie supplémentaire et donc deux fois plus d'espace disque.
Edit :notez que la commande peut être écrite de manière plus concise en utilisant la substitution de processus (merci à @phk pour le commentaire) :
comm -12 <(sort < a) <(sort < b)
Vous pouvez essayer ceci
diff --changed-group-format='%>' --unchanged-group-format='' A1 A2
Les options sont documentées dans man diff
:
--GTYPE-group-format=GFMT
format GTYPE input groups with GFMT
et :
LTYPE is 'old', 'new', or 'unchanged'.
GTYPE is LTYPE or 'changed'.
et :
GFMT (only) may contain:
%< lines from FILE1
%> lines from FILE2
[...]