У меня есть файл, в котором надо сделать "uniq" и показать результат. Мой файл:
178.57.66.225 fxsciaqulmlk
178.57.66.225 fxsciaqulmlk
178.57.66.225 fxsciaqulmlk
178.57.66.225 faaaaaa11111
178.57.66.215 terdsfsdfsdf
178.57.66.215 terdsfsdfsdf
178.57.66.215 terdsfsdfsdf
178.57.66.205 erdsfsdfsdf
178.57.66.205 erdsfsdfsdf
178.57.66.205 erdsfsdfsdf
178.57.66.205 erdsfsdfsdf
178.57.66.205 abcbbabab
178.57.66.205 abcbbabab
178.57.66.205 abcbbabab
178.56.66.225 fxsciulmla
178.56.66.225 fxsciulmla
178.56.66.225 fxsciulmla
178.57.67.225 faaaa0a1111
Мой сценарий:
for i in $(uniq -c /root/log | awk '{print $1}'); do
if [ $i -gt 2 ]; then
s=$(uniq -c /root/log | awk '$1 == '$i | awk '{print $3}')
ss=$(uniq -c /root/log | awk '$1 == '$i | awk '{print $2}')
echo "The bot is user $s with ip $ss"
fi
done
Все в порядке, но мой вывод неверен:
The bot is user fxsciaqulmlk
terdsfsdfsdf
abcbbabab
fxsciulmla with ip 178.57.66.225
178.57.66.215
178.57.66.205
178.56.66.225
The bot is user fxsciaqulmlk
terdsfsdfsdf
abcbbabab
fxsciulmla with ip 178.57.66.225
178.57.66.215
178.57.66.205
178.56.66.225
The bot is user erdsfsdfsdf with ip 178.57.66.205
The bot is user fxsciaqulmlk
terdsfsdfsdf
abcbbabab
fxsciulmla with ip 178.57.66.225
178.57.66.215
178.57.66.205
178.56.66.225
The bot is user fxsciaqulmlk
terdsfsdfsdf
abcbbabab
fxsciulmla with ip 178.57.66.225
178.57.66.215
178.57.66.205
178.56.66.225
Я делаю это в течение 2-х дней и не могу понять, где ошибаюсь? Пожалуйста помоги.
Когда я увеличиваю количество uniq в состоянии:
if [ $i -gt 2 ]; then
У меня нормальный лог:
The bot is user erdsfsdfsdf with ip 178.57.66.205
Где у меня ошибка?
Если вы хотите подсчитать уникальные строки и показать только те, которые повторяются более 3 раз, вы можете использовать -c
вариант uniq
лайк:
$ uniq -c /tmp/log | awk '{ if ($1 > 3) print "The bot is user",$3,"with ip",$2 }'
В awk
заполняет вывод, чтобы показать строки с более чем 3-мя повторениями, а затем форматирует вывод по желанию.
Обратите внимание, что для этого необходимо, чтобы файл был уже отсортирован, как видно из вашего сообщения.