Как сформировать регулярное выражение?

Есть текстовый файл, содержащий лог действий пакетного менеджера (для Debian /var/log/dpkg.log). Необходимо выдернуть из него имена установленных пакетов за последние три дня. Несколько строк из файла:
2014-11-18 10:02:29 startup archives unpack
2014-11-18 10:02:29 install xutils-dev:amd64 <нет> 1:7.7~1
2014-11-18 10:02:29 status half-installed xutils-dev:amd64 1:7.7~1

Для данных строк результатом работы регулярного выражения должно быть единственное слово "xutils-dev" (указание архитектуры не обязательно).
  • Вопрос задан
  • 2263 просмотра
Решения вопроса 1
Lerg
@Lerg
Defold, Corona, Lua, GameDev
А зачем вам здесь регулярное выражение?
Вот вам скриптик на Python:
#!/usr/bin/env python
# -*- coding: utf-8 -*-

fromDate = '2014-11-15'

for line in open('/var/log/dpkg.log'):
	date, time, action, name, other = line.split(' ', 4)
	if date >= fromDate and action == "install":
		print(name)


Задаёте дату от которой выводить и запускаете скрипт.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
OlegLazarenko
@OlegLazarenko
Например вот так:
/installed (.*?):/
regex101.com/r/mB2xC0/1
Ответ написан
@sergeysmishin
(?=[a-zA-z])\b\w+-?\w+\b(?=:)
или
(install|installed) \w+-?\w+\b(?=:)
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы