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.