El típico día a día

Hoy un amigo me planteaba un problema.
Resulta que tiene 2 ficheros con datos del tipo:

  • fichero1: [SERIAL]|[ID], por ejemplo:
    8944110064809868270|1221174
  • fichero2: [ID], por ejemplo:
    1185648

El problema es sencillo, necesita mostrar del fichero1 [SERIAL]|[ID] si [ID] está en fichero2 y de los que no estén en fichero2 mostrar únicamente la ocurrencia con [ID] más alto.
La cuestión es que todos los [ID] de fichero2 están en fichero1.

Después de un buen rato, opté por ignorar fichero2, total, todos los datos están en fichero1, no nos da ningún dato significativo.
Y lo que obtuve fue lo siguiente:
sort -k 2 -n -t "|" fichero1.txt | awk -F\| '{
file1array[$1] = $2
} END{
for (SSN in file1array)
print SSN"|"file1array[SSN] }' > test.file

El razonamiento es sencillo teniendo, la clave la da la ordenación del principio, ya que el array que creo dentro de awk irá machacando [ID] menores.

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.