Как показать строки, в которых uniq больше, чем 3

У меня есть файл, в котором нужно сделать 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

Где у меня ошибка?

0
задан 24 January 2017 в 12:19
1 ответ

Если вы хотите подсчитать уникальные строки и показать только те, которые повторяются более 3 раз, вы можете использовать параметр -c для uniq например:

$ uniq -c /tmp/log | awk '{ if ($1 > 3)  print "The bot is user",$3,"with ip",$2 }'

awk подбирает вывод для отображения строк с более чем 3-мя повторениями, а затем форматирует вывод по желанию.

Обратите внимание, что для этого необходимо, чтобы файл был уже отсортирован. ясно из вашего сообщения.

1
ответ дан 4 December 2019 в 16:22

Теги

Похожие вопросы