Le scénario est que j'ai 2 fichiers que je veux différencier côte à côte en utilisant la commande suivante avec les numéros de ligne:
diff -y file1.txt file2.txt
et
sdiff file1.txt file2.txt
La commande ci-dessus imprime simplement le diff côte à côte mais n'affiche pas les numéros de ligne. Y a-t-il un moyen de le faire ? J'ai beaucoup cherché mais je n'ai trouvé aucune solution. Je ne peux pas utiliser d'outils tiers pour info. Des idées géniales de quelqu'un?
Mise à jour:
Je veux les numéros de fichier présents du fichier lui-même et non les numéros de ligne générés par la tuyauterie vers cat -n etc. Disons que je fais un diff en utilisant "--suppress-common-l Ines "alors les numéros de ligne doivent être omis qui ne sont pas affichés dans le diff.
Le code ci-dessous peut être utilisé pour afficher des champs inhabituels dans deux fichiers, côte à côte.
sdiff -l file1 file2 | cat -n | grep -v -e '($'
Le code ci-dessous affichera également les champs communs ainsi que les numéros de ligne dans la sortie.
diff -y file1 file2 | cat -n | grep -v -e '($'
Vous pouvez également visiter https://unix.stackexchange.com/questions/34874/diff-output-line-numbers pour un format différent.
Il y a aussi cette pipe de commande soignée:
diff -y <file1> <file2> ... | less -N
Cela vous donne une instance less
avec le fichier côte à côte diff et la numérotation des lignes au début de chaque ligne.
La commande suivante affichera la sortie côte à côte précédée des numéros de ligne pour file1.txt et des lignes identiques supprimées.
sdiff -l file1.txt file2.txt | cat -n | grep -v -e '($'
sdiff -s <(cat -n file1.txt) <(cat -n file2.txt)
Cela vous donne une sortie côte à côte avec les numéros de ligne des fichiers source.
J'ai eu le même problème et j'ai fini par utiliser un outil graphique (diffus) sous Fedora 28