2013-04-23 9 views
5

Sto cercando di utilizzare il comando standard diff in Linux inorder per trovare le differenze in 2 contenuti files.The del file sono i seguenti:Ignora asterisco (*) mentre si fa diff in Linux

File1

Jim 
Jack 
Tracy* 
Michelle 

File2

Jim 
Jack 
Tracy 
Michael 

diff file1 file2 mi dà il seguente:

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

Tuttavia, voglio diff di ignorare l'asterisco (*) e dare il seguente output:

< Michelle 
--- 
> Michael 

E 'possibile farlo?

risposta

1

Utilizzando l'approccio di ShinTakezou, ma questa volta usando sed:

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

sì..il diff con sed opere !!! Grazie... – Amistad

4

Prova

diff -I '*$' FILE1 FILE2 

-I RE --ignore-matching-lines = RE

Ignora cambiamenti le cui linee tutti i match RE

Nota: questo funziona solo con la linea asterischi che terminano.

+0

non funziona ... diff -I '* $' file1 file2 3,4c3,4 Tracy > Michael – Amistad

+0

Hai perso l'asterisco dopo '-I'? –

+0

forse la ragione è qui http://www.gnu.org/software/diffutils/manual/diffutils.html#Specified-Lines --- Ho provato e non ho perso l'asterisco e ho confermato che non funziona come previsto in modo intuitivo . – ShinTakezou

0

Se si utilizza un diff che non ha l'opzione -I, è possibile annullare le righe contenenti stelle in file temporanei e quindi diffare i file temporanei. Se stai usando bash puoi usare "two pipe", ma se lo hai probabilmente hai anche il diff con l'opzione -I. In ogni caso sarebbe

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

o

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

(non testato, ma potrebbe funzionare in altre shell troppo)

nota la "stella" viene rimosso e dalla diff punto di vista non è mai esistito.

+0

Non funziona come desiderato. Il grep -v infatti cancella ogni riga contenente un asterisco e quindi un file temporaneo ha tracy e un altro no. Stavo cercando un'opzione per ignorare semplicemente l'asterisco. – Amistad

+0

ha sbagliato la domanda ... sei interessato a mantenere l'asterisco nel diff finale? se no, la soluzione è facile. Altrimenti al volo non ne ho idea, diff '-I' apart – ShinTakezou

+1

Il diff con sed funziona come un fascino..grazie !!! – Amistad

Problemi correlati