Scroll to navigation

WDIFF(1) General Commands Manual WDIFF(1)

NAZWA

wdiff - wyświetla różnice w wyrazach między plikami tekstowymi

SKŁADNIA

wdiff [opcja...] stary_plik nowy_plik

PRAWA AUTORSKIE

Copyright (C) 1992 Free Software Foundation, Inc.

OPIS

Dokumentacja niniejsza nie jest już utrzymywana i może być niedokładna lub niekompletna. Autorytatywnym źródłem jest obecnie dokumentacja Texinfo. Dostęp do niej uzyskasz wpisując w wierszu poleceń:

pinfo wdiff
lub
info wdiff.

wdiff porównuje dwa pliki, stwierdzając, które wyrazy usunięto lub dodano do starego_pliku, by uzyskać nowy_plik. Wyrazem jest cokolwiek ograniczone białymi znakami. Wyniki są zbierane i używane do utworzenia skomentowanej kopii nowego pliku na standardowym wyjściu. Odpowiednie adnotacje dają ładny obraz różnic w wyrazach między pierwotnymi plikami.

wdiff kończy pracę z kodem 0 jeśli nie odnaleziono różnic, 1 jeżeli znaleziono różnice, a 2 w przypadku błędu.

Zwykle do oznaczenia usuniętego tekstu stosowane jest podkreślenie, zaś do oznaczenia tekstu wstawionego pogrubienie lub negatyw. Ten sposób domyślny można przesłonić opcjami wiersza poleceń. Usunięty tekst oznacza tekst w starym_pliku, którego nie ma w nowym_pliku , podczas gdy wstawiony tekst oznacza tekst w nowym_pliku, którego brak w starym_pliku.

OPCJE

--help
Wypisuje komunikat pomocy opisujący opcje.
--version
Wypisuje numer wersji wdiff na standardowym wyjściu diagnostycznym.
-1
Zabrania tworzenia w wyjściu usuniętych wyrazów. Jeśli nie wybrano ani opcji -1 ani -2, to w niektórych wierszach może zostać przekroczony pierwotny prawy margines.
--no-inserted
-2
Zabrania tworzenia w wyjściu wstawionych wyrazów. Jeśli nie wybrano ani opcji -1 ani -2, to w niektórych wierszach może zostać przekroczony pierwotny prawy margines.
--no-common
-3
Zabrania tworzenia w wyjściu wspólnych wyrazów. Jeśli nie użyto tej opcji, wspólne wyrazy i białe znaki są pobierane z nowego_pliku. Gdy jej użyto, to różnice zostaną od siebie oddzielone wierszami kresek. Ponadto, jeśli opcji tej użyto równocześnie z -1 lub -2, to w utworzonym wyjściu nie będzie wyróżnień - tzn. pogrubień ani podkreśleń. Na koniec, jeśli nie użyto tej opcji, ale użyto obu opcji -1 i -2, to sekcje wspólnych wyrazów pomiędzy różnicami będą oddzielane wierszami kresek.

--statistics
Na zakończenie wypisywana jest, dla każdego pliku, całkowita liczba wyrazów, wyrazów wspólnych dla obu plików, usuniętych bądź wstawionych i liczba zmienionych. (Wyraz zmieniony to taki, który został zastąpiony lub jest częścią zastąpienia.) Z wyjątkiem całkowitej liczby wyrazów, po wszystkich pozostałych liczbach występuje procent względem całkowitej liczby wyrazów w pliku.

--auto-pager
Jeśli wyjście wdiff jest kierowane na terminal, to pomiędzy nie wstawiany jest program stronicowania (pager). Bez tej opcji nie będzie wywoływany żaden program stronicujący. Wówczas, jeśli to potrzebne, użytkownik sam odpowiada za jawne skierowanie potokiem wyjścia z wdiff to pagera.

Program stronicujący określa się wartością zmiennej środowiskowej PAGER. Jeśli podczas wykonywania wdiff zmienna PAGER nie jest zdefiniowana, to zostanie użyty domyślny program stronicujący, wybrany podczas instalacji. Zdefiniowana, lecz pusta wartość PAGER oznacza brak jakiegokolwiek programu stronicowania.

Gdy przez użycie tej opcji stosowany jest program stronicujący, włączana jest także jedna z opcji -l lub -t, w zależności od tego, czy w nazwie pagera pojawia się łańcuch "less" czy nie.

Często warto zdefiniować wdiff jako alias dla wdiff -a. Jednak "ukrywa" to zwykłe zachowanie się programu. Można je przywrócić po prostu przepuszczając potokiem wyjście wdiff przez cat. Taki sposób odłącza wyjście od terminala.

--printer
Stosuje nadruk do wyróżnienia części wyjścia. Każdy ze znaków usuniętego tekstu jest podkreślany przez wypisanie najpierw znaku podkreślenia _, a następnie znaku cofnięcia (backspace) i litery, jaka ma zostać podkreślona. Każdy ze znaków wstawionego tekstu jest pogrubiany przez wypisanie go dwukrotnie, z cofnięciem pomiędzy przebiegami. Domyślnie ta opcja nie jest włączona.

--less-mode
Stosuje nadruk do wyróżnienia części wyjścia. Działa jak opcja -p, ale dodatkowo nadpisuje białe znaki związane z wstawianym tekstem. less pokazuje takie białe znaki stosując negatyw obrazu. Domyślnie ta opcja nie jest włączona. Jest jednak włączana automatycznie każdorazowo gdy wdiff uruchamia less. (Zobacz opcję -a.)

Jest często stosowana w połączeniu z less:

wdiff -l stary_plik nowy_plik | less

--terminal
Wymusza tworzenie łańcuchów termcap do wyróżniania części wyjścia, nawet jeśli standardowe wyjście nie jest związane z terminalem. Zmienna środowiskowa TERM musi zawierać nazwę poprawnego wpisu z termcap. Jeśli pozwala na to opis danego terminala, do oznaczania usuniętego tekstu stosowane jest podkreślenie, a do wstawionego tekstu pogrubienie lub negatyw. Domyślnie ta opcja nie jest włączona. Jest jednak włączana automatycznie każdorazowo gdy wdiff uruchamia program stronicujący i wiadomo, że nie jest to less. (Zobacz opcję -a.)

Tę opcję stosuje się powszechnie gdy wyjście wdiff nie jest przekierowane, ale wysyłane wprost na terminal, jak w:

wdiff -t stary_plik nowy_plik

Częste rozwiązanie to korzystanie z wdiff razem z programem stronicującym more:

wdiff -t stary_plik nowy_plik | more

Jednak niektóre wersje more wykorzystują wyróżnienia termcap do własnych celów, więc mogą wystąpić dziwne wzajemne oddziaływania.

--start-delete argument
Stosuje argument jako łańcuch "początku usuwania". Zostanie on wypisany przed każdą sekwencją usuniętego tekstu, zaznaczając jej początek. Domyślnie nie jest używany żaden łańcuch początku usuwania, chyba że nie ma innych środków, dzięki którym można by rozpoznać, gdzie się zaczyna taki tekst. Wówczas domyślnym łańcuchem początku usuwania jest [-.

Stosuje argument jako łańcuch "końca usuwania". Zostanie on wypisany po każdej sekwencji usuniętego tekstu, zaznaczając jej koniec. Domyślnie nie jest używany żaden łańcuch końca usuwania, chyba że nie ma innych środków, dzięki którym można by rozpoznać, gdzie się kończy taki tekst. Wówczas domyślnym łańcuchem końca usuwania jest -] .

--start-insert argument
Stosuje argument jako łańcuch "początku wstawiania". Zostanie on wypisany przed każdą sekwencją wstawionego tekstu, zaznaczając jej początek. Domyślnie nie jest używany żaden łańcuch początku wstawiania, chyba że nie ma innych środków, dzięki którym można by rozpoznać, gdzie się zaczyna taki tekst. Wówczas domyślnym łańcuchem początku wstawiania jest {+.

--end-insert argument
Stosuje argument jako łańcuch "końca wstawiania". Zostanie on wypisany po każdej sekwencji wstawionego tekstu, zaznaczając jej koniec. Domyślnie nie jest używany żaden łańcuch końca wstawiania, chyba że nie ma innych środków, dzięki którym można by rozpoznać, gdzie się kończy taki tekst. Wówczas domyślnym łańcuchem końca wstawiania jest +}.

--avoid-wraps
Zabrania łączenia końców wiersza podczas pokazywania usuniętego lub wstawionego tekstu. Każdy pojedynczy fragment usuniętego lub wstawionego tekstu rozciągający się na wiele wierszy będzie uważany za złożony z wielu mniejszych kawałków nie zawierających znaku nowej linii. Zatem na przykład, usunięty tekst będzie miał łańcuch końca usuwania na końcu każdego wiersza, zaraz przed znakiem nowej linii, i łańcuch początku usuwania na początku następnego wiersza. Każdy wiersz w długim akapicie wstawionego tekstu będzie ujęty pomiędzy łańcuchy początku wstawiania i końca wstawiania. To zachowanie domyślnie nie jest włączone.

Zauważ, że opcje -p, -t i -[wxyz] nie wykluczają się wzajemnie. Używając dowolnej ich kombinacji sumuje się po prostu efekty każdej z nich. Opcja -l jest wariantem opcji -p.

PRZYKŁADY

Poniższe polecenie tworzy kopię nowego_pliku , przesuniętą o jedno miejsce w prawo w celu pomieszczenia pionowych kresek zmian od ostatniej wersji, ignorując zmiany wynikające wyłącznie z wypełnienia akapitów. Każda linia z nowym lub zmienionym tekstem otrzyma | w pierwszej kolumnie. Jednak tekst usunięty nie będzie ani pokazywany, ani oznaczany.

wdiff -1n stary_plik nowy_plik | sed -e 's/^/ /;/{+/s/^ /|/;s/{+//g;s/+}//g'

BŁĘDY

Jeśli znajdziesz błąd w wdiff, wyślij proszę list na adres pinard@iro.umontreal.ca. Załącz numer wersji, który możesz uzyskać uruchamiając wdiff --version. W liście załącz dane wejściowe wystarczające do powielenia problemu a także wyjście, jakiego się spodziewałeś.

Obecnie wdiff wywołuje diff. Byłby szybszy i czystszy w implementacji, gdyby był częścią pakietu programów diff.

Oto parę (nie przerobionych) sugestii:

-
Zrobić przeniesienie na MS-DOS.
-
Wybór opcjami co dokładnie jest białym znakiem.
-
Mieć program wpatch. Nie bardzo widać dobry sposób, jak to zrobić.

IDENTIFIKACJA

Autor: Francois Pinard, pinard@iro.umontreal.ca
Strona podręcznikowa man: Colin M. Brough, cmb@epcc.ed.ac.uk
Numer wersji: 0.4; Data wydania: 1992/12/21.

ZOBACZ TAKŻE

diff(1), less(1), cat(1), more(1), termcap(3).

2001/06/13 GNU