Eliminar entradas duplicadas con un script Bash

Quiero eliminar entradas duplicadas de un archivo de texto, por ejemplo:

kavitha= Tue Feb 20 14:00 19 IST 2012 (duplicate entry) sree=Tue Jan 20 14:05 19 IST 2012 divya = Tue Jan 20 14:20 19 IST 2012 anusha=Tue Jan 20 14:45 19 IST 2012 kavitha= Tue Feb 20 14:00 19 IST 2012 (duplicate entry) 

¿Hay alguna manera posible de eliminar las entradas duplicadas utilizando un script Bash?

Salida deseada

 kavitha= Tue Feb 20 14:00 19 IST 2012 sree=Tue Jan 20 14:05 19 IST 2012 divya = Tue Jan 20 14:20 19 IST 2012 anusha=Tue Jan 20 14:45 19 IST 2012 

Puedes sort luego uniq :

 $ sort -u input.txt 

O usa awk :

 $ awk '!a[$0]++' input.txt 

Elimina líneas duplicadas y consecutivas de un archivo (emula “uniq”).
Se mantiene la primera línea en un conjunto de líneas duplicadas, se eliminan los rests.

 sed '$!N; /^\(.*\)\n\1$/!P; D' 

Perl one-liner similar a la solución awk de @ kev:

 perl -ne 'print if ! $a{$_}++' input 

Esta variación elimina los espacios en blanco finales antes de comparar:

 perl -lne 's/\s*$//; print if ! $a{$_}++' input 

Esta variación edita el archivo in situ:

 perl -i -ne 'print if ! $a{$_}++' input 

Esta variación edita el archivo in situ y input.bak una copia de seguridad de input.bak

 perl -i.bak -ne 'print if ! $a{$_}++' input 

Esto podría funcionar para usted:

 cat -n file.txt | sort -u -k2,7 | sort -n | sed 's/.*\t/ /;s/\([0-9]\{4\}\).*/\1/' 

o esto:

  awk '{line=substr($0,1,match($0,/[0-9][0-9][0-9][0-9]/)+3);sub(/^/," ",line);if(!dup[line]++)print line}' file.txt