txt sublime sort repetidas lineas fotos eliminar duplicados duplicadas contar comando buscar archivos bash awk sed text-processing

bash - sublime - eliminar lineas duplicadas txt



Elimine lĂ­neas parcialmente duplicadas por columna y conserve el Ășltimo (4)

Tengo un archivo que se ve así:

2011-03-21 name001 line1 2011-03-21 name002 line2 2011-03-21 name003 line3 2011-03-22 name002 line4 2011-03-22 name001 line5

para cada nombre, solo quiero su última aparición. Entonces, espero que el resultado sea:

2011-03-21 name003 line3 2011-03-22 name002 line4 2011-03-22 name001 line5

¿Podría alguien darme una solución con bash / awk / sed?


EDITAR: Aquí hay una versión que realmente responde la pregunta.

sort -k 2 filename | while read f1 f2 f3; do if [ ! "$f2" = "$lf2" ]; then echo "$f1 $f2 $f3"; lf2="$f2"; fi; done


Este código obtiene líneas uniq por segundo campo, pero desde el final del archivo o texto (como en el ejemplo de resultado)

tac temp.txt | sort -k2,2 -r -u


awk ''{a[$2]=$0} END {for (i in a) print a[i]}'' file

Si el orden de aparición es importante:

  • Basado en la primera aparición:

    awk ''!a[$2] {b[++i]=$2} {a[$2]=$0} END {for (i in b) print a[b[i]]}'' file

  • Basado en la última aparición:

    tac file | awk ''!a[$2] {b[++i]=$2} {a[$2]=$0} END {for (i in b) print a[b[i]]}''


sort < bar > foo uniq < foo > bar

bar ahora no tiene líneas duplicadas