Przeglądaj dwa pliki tekstowe jednocześnie

21

Mam dwa pliki tekstowe. Każda linia reprezentuje linię w jednym języku. Muszę sprawdzić, czy wyrównanie zawsze pasuje. Dlatego potrzebuję programu, który wyświetla oba pliki tekstowe jednocześnie z numerami linii.

Próbowałem rozproszyć, ale to próbuje wyrównać pliki - jeśli przez przypadek dwie linie są równe, całe wizualne porównanie linii nie działa.

użytkownik1406177
źródło

Odpowiedzi:

28

Użyj Vima, z scrollbindzestawem. Na przykład:

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

wprowadź opis zdjęcia tutaj

Za pomocą scrollbind, jeśli przewijasz w jednym oknie, inne powiązane okna również przewijają się w tym samym czasie. Aby mieć numery ~/.vimrcwierszy, wystarczy minimum dwóch następujących wierszy:

set nocompatible
set number

Nie, że trzebavimrc do tego - może być wykonane w całości z linii poleceń:

vim -NO +'set nu' +'windo set scrollbind' file1 file2 ...
muru
źródło
12

Co powiesz na komendę z wczesnych lat Uniksa?

pr -m file1 file2

Na przykład:

pr  -m English Spanish

2016-01-18 00:34                                                  Page 1

this is something                esto es algo
hello, there                     Hola

Aktualizacja: Możesz dopasować dane wyjściowe do rozmiaru terminala, używającless

pr -m file1 file2 | less
Edward Torvalds
źródło
4
Jeśli mogę to zasugerować, potokuj wyjście, less -Naby pokazać razem numery linii. pr -m file1 file2 | less -N.
Sergiy Kolodyazhnyy
11

Z GUI możesz spróbować meld:

zrzut ekranu

Nie jest to dokładnie to, o co prosisz, ale powinno być tak samo użyteczne dla twojego celu.

Dodatkowe sekcje tekstu zostaną podświetlone na zielono, różne sekcje tekstu zostaną wyróżnione na niebiesko (podobnie jak w różnych sekcjach tekstu dodatkowe znaki zostaną wyróżnione na ciemnoniebiesko).

Działa również dla więcej niż dwóch plików jednocześnie.

kos
źródło
Lubię jak i używam meld, kdiff3, nawet sdiff; ale jeśli chcę po prostu wyświetlić obok siebie dwa pliki, które są (powinny być) różne (np. pakiety zasobów translacji i18n - właściwość jest zgodna, wartość nie; szukanie brakujących właściwości), wówczas próby dopasowania do szeregu linie i zaznacz linie, które są różne, w rzeczywistości są ujemne
Michael
@michael_n Nie mogę zrozumieć, dlaczego byłoby to negatywne. Być może nie rozumiem tego, ale jeśli użyjesz meld, powinieneś zauważyć, że w przypadkach takich jak opisywany przez ciebie linie są podświetlone jaśniejszym niebieskim, a konkretne dodatkowe znaki ciemniejszym niebieskim, dzięki czemu natychmiast pojawia się dokładna różnica . A może coś mi brakuje?
Kos
Masz absolutną rację i powinienem był wyjaśnić; problemem jest to, że narzędzia te nie mają opcji konfiguracyjnych, aby oczekiwać i pozwolić pewne różnice powinny być tam (AFAIK). W niektórych przypadkach uważają, że cały plik jest zbyt inny, aby nawet zawracać sobie głowę ustawieniem się w kolejce. Np. Użyteczną opcją (z moim przykładem: msg.text = "Hello" vs msg.text = "Bonjour") byłoby zignorowanie części dwóch plików przez „pierwsze N ​​znaków” lub regexp: „^. * = "
Michał
Właściwie myślę, że sdiff ma opcję ignorowania przez wyrażenie regularne (ale nie jestem pozytywny). Jeśli jednak jest to tylko dowolny tekst z francuskiego i angielskiego, nie trzeba niczego wyróżniać, a każda próba dopasowania linii - jak wspomniałem - byłaby negatywna. Czasami chcemy po prostu widzieć pliki obok siebie (i to jest istota pierwotnego pytania, tak jak je rozumiem).
Michael
@ michael_n Właściwie właśnie zauważyłem rzecz dotyczącą porównywania języków, z jakiegoś powodu początkowo myślałem, że potrzebują bardziej ogólnego narzędzia do porównywania tekstu. Prawdopodobnie masz rację, powinienem to usunąć, choć uważam również, że pytania zatytułowane są tak ogólne, jak to, które zwykle przyciągają wiele odwiedzin z wyszukiwarek (np. Jeśli Google „Plik obok siebie Ubuntu” jest obecnie trzeci wynik). Może więc lepiej, jeśli pozostanie w tym przypadku. W końcu to nie powinno boleć. Dokładne odpowiedzi już u góry stosu.
Kos
5

W wierszu poleceń możesz użyć

 paste file1 file2 | less -N
Florian Diesch
źródło
0

Jeśli szukasz tłumaczeń, może Ci się przydać Poedit . Może wyświetlać dwa teksty obok siebie i jest przeznaczony do pracy z tłumaczeniami.

Ładowanie proszę czekać
źródło
1
zamiast wklejać linki do rozwiązania, powinieneś to również wyjaśnić „jak”
Edward Torvalds
Ten wydaje się być ograniczony do pracy z gettext.
carnendil