Visualisez deux fichiers texte en même temps côte à côte

21

J'ai deux fichiers texte. Chaque ligne représente une ligne dans une langue. Je dois vérifier si l'alignement correspond toujours. Par conséquent, j'ai besoin d'un programme qui affiche les deux fichiers texte en même temps avec des numéros de ligne.

J'ai essayé de diffuser, mais cela essaie d'aligner les fichiers - si par accident deux lignes sont égales, toute la comparaison visuelle ligne par ligne ne fonctionne pas.

user1406177
la source

Réponses:

28

Utilisez Vim, avec scrollbindset. Par exemple:

vim -O +'windo set scrollbind' /etc/profile /etc/profile.pacnew

entrez la description de l'image ici

Avec scrollbind, si vous faites défiler dans une fenêtre, les autres fenêtres liées défilent également en même temps. Pour avoir des numéros de ligne, un ~/.vimrccontenant au moins les deux lignes suivantes suffit:

set nocompatible
set number

Non pas que vous avez besoin d' un vimrcpour cela - il peut être fait entièrement à partir de la ligne de commande:

vim -NO +'set nu' +'windo set scrollbind' file1 file2 ...
muru
la source
12

Que diriez-vous d'une commande des premiers jours d'Unix?

pr -m file1 file2

Par exemple:

pr  -m English Spanish

2016-01-18 00:34                                                  Page 1

this is something                esto es algo
hello, there                     Hola

Mise à jour: vous pouvez adapter la sortie à la taille de votre terminal en utilisantless

pr -m file1 file2 | less
Edward Torvalds
la source
4
Si je peux le suggérer, dirigez la sortie vers less -Npour afficher les numéros de ligne ensemble. pr -m file1 file2 | less -N.
Sergiy Kolodyazhnyy
11

Depuis l'interface graphique, vous pouvez essayer meld:

capture d'écran

Ce n'est pas exactement ce que vous demandez, mais cela devrait être tout aussi utile pour votre objectif.

Des sections de texte supplémentaires seront surlignées en vert, différentes sections de texte seront surlignées en bleu (et de même dans différentes sections de texte, des caractères supplémentaires seront surlignés en bleu foncé).

Fonctionne également pour plus de deux fichiers à la fois.

kos
la source
J'aime et utilise meld, kdiff3, même sdiff; mais si je veux juste afficher deux fichiers côte à côte qui sont (supposés être) différents (par exemple, les ensembles de ressources de traduction i18n - la propriété correspond, la valeur ne correspond pas; recherche des propriétés manquantes), alors les tentatives d'alignement correspondent lignes et marques de lignes différentes est en fait un point négatif.
michael
@michael_n Je ne sais pas pourquoi ce serait négatif. Peut-être que je manque le point, mais si vous utilisez, meldvous devriez avoir remarqué que dans des cas comme le cas où vous décrivez les lignes sont surlignées en bleu clair et les caractères supplémentaires spécifiques dans un bleu plus foncé, faisant la différence exacte qui apparaît instantanément . Ou est-ce que je manque quelque chose?
kos
Vous avez absolument raison, et j'aurais dû clarifier; le problème est que ces outils ne disposent d' une option de configuration pour attendre et permettre que certaines différences doivent être là (afaik). Dans certains cas, ils considèrent le fichier entier trop différent pour prendre la peine de s'aligner. Par exemple, une option utile (avec mon exemple: msg.text = "Hello" vs msg.text = "Bonjour") serait d'ignorer une partie des deux fichiers par "first N chars", ou regexp: "^. * = "
michael
En fait, je pense que sdiff a une option à ignorer par regexp (mais je ne suis pas positif). Pourtant, s'il ne s'agit que de texte de forme libre en français et en anglais, il n'est pas nécessaire de mettre en évidence quoi que ce soit, et toute tentative de mise en correspondance des lignes - comme je l'ai mentionné - serait négative. Parfois, nous voulons juste voir les fichiers côte à côte (et c'est l'essence de la question d'origine, si j'ai bien compris).
michael
@michael_n En fait, je viens de remarquer la comparaison des langues, pour une raison quelconque, au début, je pensais qu'ils avaient besoin d'un outil de comparaison de texte plus général. Vous avez probablement raison, je devrais supprimer cela, bien que je considère également que les questions intitulées de manière aussi générique que celle-ci attirent généralement beaucoup de visites des moteurs de recherche (par exemple, si je "file côte à côte Ubuntu" sur Google, c'est actuellement la troisième résultat). Alors peut-être qu'il vaut mieux que cela reste dans ce cas. Après tout, cela ne devrait pas faire de mal. La ou les réponses exactes font déjà le haut de la pile.
kos
5

Sur la ligne de commande, vous pouvez utiliser

 paste file1 file2 | less -N
Florian Diesch
la source
0

Si vous cherchez des traductions, Poedit pourrait vous être utile. Il peut afficher les deux textes côte à côte pour vous et est conçu pour travailler avec des traductions.

Chargement, veuillez patienter
la source
1
au lieu de simplement coller des liens vers la solution, vous devez également l'expliquer «comment»
Edward Torvalds
Celui-ci semble se limiter à travailler avec gettext.
carnendil