Задать вопрос

Как удалить из файл одинаковые ip адреса?

есть файл, в нем список адресов, как с помощью grep или других инструментов удалить одинаковые ip адреса, чтобы их не было вообще? То есть чтобы остались только уникальные.
$ cat access.log
212.164.35.62:80
212.164.35.62:80
212.164.35.62:443
212.164.3.95:80
212.164.4.26:80
212.164.4.26:80
212.164.4.26:443
212.164.48.174:80
212.164.49.104:80
  • Вопрос задан
  • 4085 просмотров
Подписаться 5 Оценить Комментировать
Решения вопроса 1
@Konkase
Тогда так:
cat access.log | awk '{split($0,a,":"); print a[1]}' | sort -u
Ответ написан
Пригласить эксперта
Ответы на вопрос 6
vvpoloskin
@vvpoloskin
Инженер связи
cat access.log | sort | uniq
Ответ написан
miruss
@miruss Автор вопроса
спасибо Konkase
#!/bin/bash

for ip in `cat ./access.log | awk '{split($0,a,":"); print a[1]}'`
	do
	dup=`cat ./access.log | awk '{split($0,a,":"); print a[1]}' | grep $ip | wc -l`
		if [[ "$dup" > 1 ]]
			then
				: 
			else
				echo -e "$ip" 
		fi
done
Ответ написан
xotkot
@xotkot
хорошо есть и хорошо весьма
awk -F: '{print $1}' access.log |uniq -u
Ответ написан
Комментировать
afiskon
@afiskon
cat ip.txt | cut -d ':' -f 1 | sort -u
Ответ написан
Комментировать
risik
@risik
Программист
cat access.log | awk -FS: '{printf $1 "\n"};' | sort | uniq

Это если вырезать двоеточие и номер порта для Вас не проблема.

Если проблема, то тогда вопрос, а какой порт при таких записях
212.164.35.62:80
212.164.35.62:443

должен остаться?
Ответ написан
perl -i -ne 'print unless $a{$_}++' access.log
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

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