Digamos que tengo los siguientes 2 archivos con entradas como estas (número, IP y agente de usuario):
30000 11.11.11.11 Dalvik/2.1.0 Linux 10000 22.22.22.22 GetintentCrawler getintent.com 5000 33.33.33.33 Mozilla/5.0 X11; Linux i686 AppleWebKit/537.36 KHTML, like Gecko Chrome/43.0.2357.130 Safari/537.36 3000 44.44.44.44 Mozilla/5.0 Macintosh; Intel Mac OS X 10_6_8 AppleWebKit/534.59.10 KHTML, like Gecko Version/5.1.9 Safari/534.59.10 1000 55.55.55.55 Dalvik/1.6.0 Linux; U; Android 4.1.2; Orange Yumo Build/OrangeYumoy
6000 44.44.44.44 Mozilla/5.0 Macintosh; Intel Mac OS X 10_6_8 AppleWebKit/534.59.10 KHTML, like Gecko Version/5.1.9 Safari/534.59.10 3000 33.33.33.33 Mozilla/5.0 X11; Linux i686 AppleWebKit/537.36 KHTML, like Gecko Chrome/43.0.2357.130 Safari/537.36 2000 11.11.11.11 Dalvik/2.1.0 Linux 600 55.55.55.55 Dalvik/1.6.0 Linux; U; Android 4.1.2; Orange Yumo Build/OrangeYumo 500 22.22.22.22 GetintentCrawler getintent.comQuiero poder resumir la primera columna para todas las direcciones IP idénticas (la segunda columna), al mismo tiempo que mantengo todas las columnas posteriores con el agente de usuario. Además, el resultado final debe ordenarse por primera columna.
Entonces, el resultado básicamente debería verse así:
32000 11.11.11.11 Dalvik/2.1.0 Linux 10500 22.22.22.22 GetintentCrawler getintent.com 9000 44.44.44.44 Mozilla/5.0 Macintosh; Intel Mac OS X 10_6_8 AppleWebKit/534.59.10 KHTML, like Gecko Version/5.1.9 Safari/534.59.10 8000 33.33.33.33 Mozilla/5.0 X11; Linux i686 AppleWebKit/537.36 KHTML, like Gecko Chrome/43.0.2357.130 Safari/537.36 1600 55.55.55.55 Dalvik/1.6.0 Linux; U; Android 4.1.2; Orange Yumo Build/OrangeYumoHasta ahora se me ocurrió esto, pero pierdo toda la cadena de agente de usuario y también siento que estoy complicando demasiado las cosas:
cat file1.txt file2.txt file3.txt | awk '{arr[$2]+=$1;} END {for (i in arr) print i, arr[i]}' | awk '{ print $2" "$1 }' | sort -rnPuedes usar este gnu-awk :
awk 'BEGIN{PROCINFO["sorted_in"]="@ind_num_asc"} { p=$1; $1=""; a[$0]+=p} END{for (i in a) print a[i] i}' file1 file2 BEGIN{PROCINFO["sorted_in"]="@ind_num_asc"} se usa para mantener el orden de las claves en una matriz asociativa.
Producción:
32000 11.11.11.11 Dalvik/2.1.0 Linux 10500 22.22.22.22 GetintentCrawler getintent.com 8000 33.33.33.33 Mozilla/5.0 X11; Linux i686 AppleWebKit/537.36 KHTML, like Gecko Chrome/43.0.2357.130 Safari/537.36 9000 44.44.44.44 Mozilla/5.0 Macintosh; Intel Mac OS X 10_6_8 AppleWebKit/534.59.10 KHTML, like Gecko Version/5.1.9 Safari/534.59.10 1600 55.55.55.55 Dalvik/1.6.0 Linux; U; Android 4.1.2; Orange Yumo Build/OrangeYumo