Tengo un archivo de datos que consta de varias filas y columnas con datos numéricos y de cadena. Algunas cadenas y patrones numéricos se repiten. Necesito extraer el último patrón repetido. Por ejemplo;
715 ANKR PRN 1 value 1
760 ISTA PRN 2 value 2
715 ANKR PRN 1 value 3
760 ISTA PRN 2 value 4
715 ANKR PRN 1 value 5
760 ISTA PRN 2 value 6
1 ANKR PRN 7 value 8
2 ISTA PRN 7 value 9
1 ANKR PRN 7 value 10
3 ISTA PRN 7 value 11
1 ANKR PRN 7 value 12
en este ejemplo, "715 ANKR PRN 1", "760 ISTA PRN 2" y "1 ANKR PRN 7" se repiten 3 veces dentro del archivo de datos. Necesito extraer los últimos patrones repetidos y ordenarlos de la siguiente manera;
715 ANKR PRN 1 value 5
760 ISTA PRN 2 value 6
1 ANKR PRN 7 value 12
Utilizando herramientas estándar, sort
, rev
, uniq
:
% sort -k1,5 -k6,6nr file.txt | rev | uniq -f1 -d | rev
1 ANKR PRN 7 value 12
715 ANKR PRN 1 value 5
760 ISTA PRN 2 value 6
Si desea ordenar la salida como desee:
% sort -k1,5 -k6,6nr file.txt | rev | uniq -f1 -d | rev | sort -k6,6n
715 ANKR PRN 1 value 5
760 ISTA PRN 2 value 6
1 ANKR PRN 7 value 12
Qué tal si
awk '{a[$1 FS $2 FS $3 FS $4 FS $5] = $6; c[$1 FS $2 FS $3 FS $4 FS $5]++}; END{for (i in a) {if (c[i]>1) print i,a[i]}}'
Probar con su entrada
$ awk '{a[$1 FS $2 FS $3 FS $4 FS $5] = $6; c[$1 FS $2 FS $3 FS $4 FS $5]++}; END{for (i in a) {if (c[i]>1) print i,a[i]}}' file
715 ANKR PRN 1 value 5
760 ISTA PRN 2 value 6
1 ANKR PRN 7 value 12