Выборка относительно уникальных строк из файла (Unix,Linux)

Уникальные строки из файла


Допустим, у Вас есть лог-файл, куда записываются различного рода операции,В данном случае ошибка #18956. В этом файле присутствует всего два различных значения: это дата ошибки и логин пользователя. Пример файла:


[17-Oct-2012 01:32:29] ERROR! ERR-CODE=18956, login=Gonshik1
[17-Oct-2012 02:32:56] ERROR! ERR-CODE=18956, login=Gonshik1
[17-Oct-2012 13:15:50] ERROR! ERR-CODE=18956, login=Gonshik1
[17-Oct-2012 13:41:19] ERROR! ERR-CODE=18956, login=Gonshik1
[18-Oct-2012 09:57:22] ERROR! ERR-CODE=18956, login=Gonshik1
[18-Oct-2012 10:04:10] ERROR! ERR-CODE=18956, login=Gonshik1
[18-Oct-2012 10:08:46] ERROR! ERR-CODE=18956, login=Gonshik1
[18-Oct-2012 10:18:20] ERROR! ERR-CODE=18956, login=Gonshik1
[18-Oct-2012 10:45:47] ERROR! ERR-CODE=18956, login=Gonshik1
[18-Oct-2012 14:28:36] ERROR! ERR-CODE=18956, login=Gonshik1
[18-Oct-2012 15:22:11] ERROR! ERR-CODE=18956, login=Gonshik1
[18-Oct-2012 16:07:16] ERROR! ERR-CODE=18956, login=Gonshik1
[18-Oct-2012 19:30:55] ERROR! ERR-CODE=18956, login=Gonshik1
[19-Oct-2012 04:18:05] ERROR! ERR-CODE=18956, login=Gonshik1
[19-Oct-2012 05:40:03] ERROR! ERR-CODE=18956, login=Speedy
[19-Oct-2012 11:14:20] ERROR! ERR-CODE=18956, login=Slava
[19-Oct-2012 11:14:30] ERROR! ERR-CODE=18956, login=Kareta777
[19-Oct-2012 11:14:48] ERROR! ERR-CODE=18956, login=Kareta777
[19-Oct-2012 11:15:11] ERROR! ERR-CODE=18956, login=Kareta777
[19-Oct-2012 11:15:13] ERROR! ERR-CODE=18956, login=Slava
[19-Oct-2012 11:15:26] ERROR! ERR-CODE=18956, login=Kareta777
[19-Oct-2012 11:15:46] ERROR! ERR-CODE=18956, login=Kareta777
[19-Oct-2012 11:16:13] ERROR! ERR-CODE=18956, login=Slava
[19-Oct-2012 12:00:54] ERROR! ERR-CODE=18956, login=Gonshik1
[19-Oct-2012 14:13:44] ERROR! ERR-CODE=18956, login=Dmitry

Вам нужно выбрать всех пользователей, или узнать сколько пользователей инициировали данную ошибку. Вам нужно выбрать уникальные строки из файла не смотря на дату ошибки.

Простейший код:

cat logfile.txt | grep -oEi '(login=)(\w+)' | sort | uniq | sed 's/login=//g'

На выходе мы получим только не повторяющиеся логины пользователей, у которых возникла определенная ошибка. Вот и все.

linux, unix, cat, grep, sed

Комментарии

Популярные сообщения из этого блога

Как преобразовать строку в массив в ClickHouse / How to transform string to array in ClickHouse

Как разложить массив на несколько строк в ClickHouse

Экспорт одной таблицы базы данных или mysqldump одной таблицы (MySQL)