Команда uniq может использоваться для устранения всех последовательных строк, которые идентичны полностью или частично. По умолчанию он работает только на целых строках. То есть, если в файле имеется несколько одинаковых последовательных строк, uniq удаляет дубликаты.
$ cat foo.txt
foo
foo
foo
bar
baz
baz
foo
foo
$ uniq foo.txt
foo
bar
baz
foo
Чтобы удалить все повторяющиеся строки, даже не последовательные, его можно запустить после sort:
$ sort foo.txt | uniq
bar
baz
foo
Некоторые флаги могут использоваться, чтобы рассматривать только одну часть строки при определении дубликатов. Здесь мы хотим рассмотреть только IP-адреса, которые находятся в четвертом столбце, поэтому сначала нам нужно сказать uniq игнорировать первые три столбца, это делается с помощью флага -f. И после этого нам нужно сказать, что нужно учитывать только IP-адреса. Это может быть сложно, потому что мы можем только сказать, что оно учитывает фиксированное количество символов (с флагом -w), но IP-адреса могут быть разными по длине. К счастью, здесь это не проблема, потому что IP-адреса всегда сопровождаются requested, поэтому, даже если первые несколько символов этого слова включены в сравнение, это не повлияет на правильность определения строки в виде дубликата. В конце концов, применение uniq -f 3 - w 15 к входу, по-видимому, приводит к желаемому результату.
Еще одна вещь, которую следует отметить: когда мы рассматриваем только одну часть строк в обнаружении дубликатов, все строки в группа «дубликатов» не обязательно должна быть полностью идентичной, и поэтому мы должны решить, какой из них будет напечатан на выходе. uniq печатает первый, но может быть сделан для печати последнего, сначала выполнив вход через tac.
Обновление для Virtualbox-5.2 и отключение поддержки USB для гостевой ОС решило эту проблему.
Обновление для Virtualbox-5.2 и отключение поддержки USB для гостевой ОС решило эту проблему.