web-dev-qa-db-fra.com

Comment afficher les numéros de ligne côte à côte dans unix?

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.

20
nomazoma49

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.

11
Utsav

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.

2
Ezbob

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 '($'
2
markpietrus
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.

1
Mike Titus

J'ai eu le même problème et j'ai fini par utiliser un outil graphique (diffus) sous Fedora 28

0
user11425287