Привет. Есть файл полученный awk '{print $3" "$8}' /var/log/access.log.1|sort|uniq -c >src
30 127.0.0.1 u1
23 192.168.0.2 u1
52 192.168.0.2 u3
106 192.168.0.2 u2
7 192.168.3.3 u2
36 192.168.3.3 u4Хочу вывести строки уникальные по второму полю (по ip), но где цифра в первом поле больше.
Пока я застрял на таком. Двойным перебором сравниваю построчно, и если 2е поле совпадает и
1е поле больше, то печатаю строку. Для одинаковых выведенных строк к конце будет sort -u
IFS=$'\n'
for a in `cat src`; do
# $b нужно чтобы взять 2е поле. пока не научился взять 2е поле сразу из $a
b=${a% *}
for i in `cat src`; do
[ "$a" = "$i" ] && continue
j=${i% *}
if [ "${j#* }" = "${b#* }" ] && [ "${i%% *}" -gt "${a%% *}" ];then
echo "$i"
fi
done
done
#./test123.sh|./123.sh |sort -u
106 192.168.0.2 u2
36 192.168.3.3 u4
52 192.168.0.2 u3
хотя по идее должен был получить
106 192.168.0.2 u2
36 192.168.3.3 u4
30 127.0.0.1 u1
Подскажите, где доделать алгоритм или сразу неверно начал решать и надо переделать?