У меня около 270 файлов журналов .bz2 (25 дневных журналов) и один текстовый файл с приблизительно 1500 именами пользователей. Что мне нужно сделать, это выяснить, кто из этих пользователей вошел в систему за последние 25 дней. Поэтому мне нужно извлекать имена пользователей из списка файлов и прекращать поиск, когда имя пользователя найдено в первом файле (при первом совпадении).
Мой код работает, но если в первом найденном совпадении файла мне не нужно обрабатывать другие файлы, разбивать и искать другое имя пользователя, если он найден, то есть в третьем файле, прервать и найти другое имя пользователя:
for i in $(cat /tmp/usernames.txt); do for j in $(ls *.bz2); do
bzgrep -o -m1 $i $j; done; done
Здесь, если в первом совпадении найден файл, он ломается (флаг -m1) и начинает поиск того же имени пользователя во втором файле, но мне это больше не нужно.
Проблема: мне нужно проверять пользователей, которые не вошли в систему за последние 25 дней. Так что я могу уменьшить свои разрешения в приложении. Если пользователь вошел в систему хотя бы один раз за последние 25 дней, я не уменьшаю его разрешения.
Вопрос: мне нужно найти, кто из этих имен пользователей существует в моих файлах журнала. Если имя пользователя найдено в одном из файлов, хотя бы один раз прекратите поиск этого пользователя и начните поиск другого пользователя.
Пример: если user1 найден в file1, распечатайте его и больше не ищите этого пользователя в этом или других файлах. Если user2 найден в файле 8, распечатайте его один раз и прекратите поиск в файле 9, файле 10, файле 11 ... файле 250. Надеюсь, что это имеет смысл.