2013-04-23 9 views
5

Próbuję użyć standardowego polecenia diff w Linuksie Inorder znaleźć różnice w 2 files.The zawartości pliku są następujące:Ignoruj ​​gwiazdką (*) robiąc diff w Linuksie

File1

Jim 
Jack 
Tracy* 
Michelle 

File2

Jim 
Jack 
Tracy 
Michael 

diff plik1 plik2 daje mi następujące:

< Tracy* 
< Michelle 
--- 
> Tracy 
> Michael 

Jednakże chcę różn ignorować gwiazdką (*) oraz podać następujące dane wyjściowe:

< Michelle 
--- 
> Michael 

to możliwe, aby to zrobić?

Odpowiedz

1

Stosując podejście ShinTakezou, ale tym razem przy użyciu sed:

diff <(sed 's/\*$//' file1) <(sed 's/\*$//' file2) 
+1

tak.. diff z sed działa !!! Dzięki... – Amistad

4

Spróbuj

diff -I '*$' FILE1 FILE2 

-I RE --ignore-Matching lines = RE

ignorowanie zmian, których linie cały mecz RE

Uwaga: To działa tylko z linią kończące gwiazdki.

+0

nie działa ... diff -I '* $' plik1 plik2 3,4c3,4 Tracy > Michael – Amistad

+0

Czy przegapiłeś gwiazdkę po '-I'? –

+0

Może powód jest tutaj http://www.gnu.org/software/diffutils/manual/diffutils.html#Specified-Lines --- Próbowałem i nie przegapiłem gwiazdki i potwierdzam, że nie działa zgodnie z oczekiwaniami intuicyjnie . – ShinTakezou

0

Jeśli używasz pliku różnicowego, który nie ma opcji -I, możesz odkładać linie zawierające gwiazdki w plikach tymczasowych, a następnie porównywać pliki tymczasowe. Jeśli używasz bashu, możesz użyć "dwóch potoków", ale jeśli masz na to różnicę, masz również opcję -I. Zresztą byłoby

sed 's/*$//' file1 >file1.temp 
sed 's/*$//' file2 >file2.temp 
diff file1.temp file2.temp 

lub

diff <(sed 's/*$//' file1) <(sed 's/*$//' file2) 

(nie testowane, ale może pracować w innych skorup zbyt)

uwaga "gwiazda" jest usuwany, a od diff punktu widzenia nigdy nie istniała.

+0

Nie działa zgodnie z oczekiwaniami. Atrybut grep -v usuwa dowolną linię zawierającą gwiazdkę, a zatem jeden plik tymczasowy ma tracy, a inny nie. Wyszukałem opcję, aby po prostu zignorować gwiazdkę. – Amistad

+0

źle postawił pytanie ... Czy chcesz zachować gwiazdkę w ostatniej wersji? jeśli nie, poprawka jest łatwa. W przeciwnym razie w locie nie mam pojęcia, diff '-I' poza – ShinTakezou

+1

Różnica z sed działa jak urok..dzięki !!! – Amistad