2012-05-22 4 views
12

Mam dwa pliki, których kolejność linii jest nieistotna i chcę porównać jej zawartość.Porównaj dwa pliki ignorujące zamówienie

Zajrzałem do dokumentacji diff, ale nie mogłem znaleźć czegoś takiego jak --ignore-order.

Jakieś wskazówki?

PS: $ nie działa w moim komputerze, być może jestem źle zrozumiany.

+0

możesz pokazać krótki fragment dwóch plików i przykład tego, co chcesz? – matchew

+1

'$' wskazuje wiersz polecenia, po prostu wpisz pozostałą linię po nim. – Kevin

Odpowiedz

35

Sortuj pierwsze pliki:

$ sort file1 > file1.sorted 
$ sort file2 | diff - file1.sorted 

Ponadto, chociaż ja osobiście zniechęcić do tego typu rzeczy, jeśli używasz bash i ta funkcja jest włączona w systemie można uniknąć plik tymczasowy przy użyciu procesu zastąpienie:

$ diff <(sort file1) <(sort file2) 
+0

drugie rozwiązanie jest eleganckie – CTodea

2

Być może patrzysz na problem po złej stronie. Być może chcesz posortować oba pliki, a następnie porównać je?

Inaczej

diff file1 file2 

zrobi dokładnie to, co prosicie.