По регулярным выражениям, помогите

  1. 6 г. назад

    У меня тонна логов, в них записи, типа
    [2/1/18 00:00:00:001] New month started!
    [2/26/18 10:52:00:036] Event occured!

    Хочу отобрать только то, что было в феврале, пишу логичное своему желанию выражение
    grep -R --include="*.log" -rn '^\[2\/[1-2]?[0-9]\/18' /path/to/logs
    ни [...] не выдает

    Если писать
    grep -R --include="*.log" -rn '^\[2\/[0-9]\/18' /path/to/logs
    выдает, но понятно что не совсем то что надо (начало февраля только)

  2. [0-9]+

  3. а ещё лучше так:
    [0-9]{1,2}

  4. grep -R --include="*.log" -rn '^\[2\/[0-9]{1,2}\/18' /path/to/logs
    не работает
    grep -R --include="*.log" -rn '^\[2\/[0-9]+\/18' /path/to/logs
    не работает
    grep -R --include="*.log" -rn '^\[2\/[0-9]*\/18' /path/to/logs
    тут работает

    Такое ощущение, что grep не понимает знаков ?,+, {1-2} может какого то флага не хватает в параметрах?

  5. Бингогашечка!
    grep -R --include="*.log" -rn -E '^\[2\/[1-2]?[0-9]\/18' /path/to/logs
    заработало.
    Ответ был тут
    https://askubuntu.com/questions/293148/grep-operator-does-not-work

  6. 27.02.2018 10:08:40 отредактировано sda553

    Достаточно покороче записать то же самое так
    grep -rnE --include="*.log" '^\[2\/[1-2]?[0-9]\/18' /path/to/logs
    а если перейти в каталог с логами то вообще вот так (в конце точку)
    grep -rnE --include="*.log" '^\[2\/[1-2]?[0-9]\/18' .

или зарегистрируйтесь чтобы ответить!