On Tue, Nov 10 2015, Hugo Florentino wrote: > Hola colegas, > > Supongamos que ejecuto este comando > sed -r 's/.* SRC=(\S+) .* DPT=(80|443) .*/\1\t\2/g' > /var/log/firewall.log | sort -t . -k1,1n -k2,2n -k3,3n -k4.4n | uniq -c > | sed -r 's/^\s+(\S+)\s+/\1\t/g'
El «-k4.4n» no te funciona, porque lo q separa el último octeto del número de puertos es un solo carácter de tabulación. Así q las direcciones con menos de tres dígitos en el último octeto usarán al menos un dígito del puerto para ordenar. Mi recomendación: usa un punto en vez de una tabulación, y con eso puedes fácilmente usar la columna del puerto para ordenar. También ordena por el puerto desde el principio, o habrá casos «uniq» no agrupará correctamente por no estar consecutivos. Te quedaría la cuenta q hace «uniq», q con «tr» y/o «sed» debes resolver, y de ahí ordernar como quieres (q sería como el primero, pero adicionando el criterio de la nueva columna). Al final, bueno, puedes usar «cut», «sed» o un simple «while IFS=. read ...» para reformatear la salida a tu gusto (o de tu jefe). Para el orden reverso, fíjate bien en el manual ;) Te puedo enviar la solución q tengo en mente, pero es mejor cuando la haces tú. Servilio ______________________________________________________________________ Lista de correos del Grupo de Usuarios de Tecnologías Libres de Cuba. Gutl-l@jovenclub.cu https://listas.jovenclub.cu/cgi-bin/mailman/listinfo/gutl-l