Veja dois arquivos de texto ao mesmo tempo lado a lado

21

Eu tenho dois arquivos de texto. Cada linha representa uma linha em um idioma. Preciso verificar se o alinhamento sempre se encaixa. Portanto, preciso de um programa que exiba os dois arquivos de texto ao mesmo tempo com os números de linha.

Tentei difundir, mas isso tenta alinhar os arquivos - se, por acidente, duas linhas forem iguais, toda a comparação visual em linhas não funcionará.

user1406177
fonte

Respostas:

28

Use Vim, com scrollbindconjunto. Por exemplo:

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

insira a descrição da imagem aqui

Com scrollbind, se você rolar em uma janela, as outras janelas associadas também rolarão ao mesmo tempo. Para ter números de linha, ~/.vimrcbasta conter um mínimo das duas linhas a seguir:

set nocompatible
set number

Não que você precise de um vimrcpara isso - isso pode ser feito inteiramente a partir da linha de comando:

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

Que tal um comando desde os primeiros dias do Unix?

pr -m file1 file2

Por exemplo:

pr  -m English Spanish

2016-01-18 00:34                                                  Page 1

this is something                esto es algo
hello, there                     Hola

Atualização: Você pode ajustar a saída ao tamanho do seu terminal usandoless

pr -m file1 file2 | less
Edward Torvalds
fonte
4
Se eu puder sugerir isso, canalize a saída less -Npara mostrar os números de linha juntos. pr -m file1 file2 | less -N.
Sergiy Kolodyazhnyy
11

Na GUI, você pode tentar meld:

captura de tela

Não é exatamente o que você está pedindo, mas deve ser útil para o seu propósito.

Seções adicionais de texto serão destacadas em verde, diferentes seções de texto serão destacadas em azul (e da mesma forma em diferentes seções de texto, os caracteres adicionais serão destacados em azul mais escuro).

Funciona também para mais de dois arquivos ao mesmo tempo.

kos
fonte
Eu gosto e uso meld, kdiff3, até sdiff; mas se eu quiser apenas exibir dois arquivos lado a lado que são (supostamente) diferentes (por exemplo, pacotes de recursos de tradução i18n - a propriedade corresponde, o valor não; procurando propriedades ausentes), as tentativas de alinhar a correspondência linhas e marcar linhas diferentes é realmente negativo.
22616 Michael
@michael_n Estou sem entender por que isso seria negativo. Talvez eu esteja esquecendo o ponto, mas se você usar, melddeve ter notado que, em casos como o caso, está descrevendo as linhas destacadas em azul mais claro e os caracteres adicionais específicos em azul mais escuro, fazendo a diferença exata instantaneamente . Ou eu estou esquecendo de alguma coisa?
kos
Você está absolutamente correto, e eu deveria ter esclarecido; o problema é que essas ferramentas não têm uma opção de configuração para esperar e permitir que certas diferenças devem estar lá (afaik). Em alguns casos, eles consideram o arquivo inteiro muito diferente para se preocupar em alinhar. Por exemplo, uma opção útil (com meu exemplo: msg.text = "Hello" vs msg.text = "Bonjour") seria ignorar parte dos dois arquivos por "first N chars" ou regexp: "^. * = "
michael
Na verdade, acho que o sdiff tem uma opção para ignorar pelo regexp (mas não sou positivo). Ainda assim, se for apenas um texto em formato livre de francês e inglês, não há necessidade de destacar nada, e qualquer tentativa de combinar as linhas - como mencionei - seria negativa. Às vezes, queremos apenas ver os arquivos lado a lado (e essa é a essência da pergunta original, como eu a entendi).
michael
@michael_n Na verdade, acabei de perceber a questão da comparação de idiomas, por algum motivo, inicialmente, pensei que eles precisassem de uma ferramenta de comparação de texto de propósito mais geral. Provavelmente, você está certo, eu deveria excluir isso, embora eu também esteja considerando que as perguntas intituladas tão genericamente quanto essa geralmente atraem muitas visitas dos mecanismos de pesquisa (por exemplo, se eu pesquiso no Google "arquivo lado a lado o Ubuntu"), esse é atualmente o terceiro resultado). Então talvez seja melhor se permanecer neste caso. Afinal, não deve doer. As respostas exatas estão no topo da pilha.
kos
5

Na linha de comando, você pode usar

 paste file1 file2 | less -N
Florian Diesch
fonte
0

Se você estiver procurando por traduções, poderá achar útil o Poedit . Ele pode exibir os dois textos lado a lado para você e foi criado para trabalhar com traduções.

Carregando, por favor espere
fonte
1
em vez de apenas colando links para solução, você deve explicar 'como' demais
Edward Torvalds
Este parece estar limitado ao trabalho com gettext.
carnendil