Я пытаюсь скопировать строки из файла журнала с определенных дней.

Вот пример того, как они выглядят.

2014-05-01T15:53:16+00:00 DEBUG (7): 

2014-04-301T11:08:10+00:00 DEBUG (7):

Эта команда GREP работает, но только для точных строк:

grep -w '2014-04-30\|2014-04-29\|2014-04-28\|2014-04-27\|2014-04-26\|2014-04-25\|2014-04-24\|2014-04-23\|2014-04-22\|2014-04-21\|2014-04-202014-04-19' /test_custom.log > new_file.log

Когда я пытаюсь добавить шаблон, это не работает. Я также попробовал несколько других способов с тем же результатом.

grep -w '2014-04-30*\|2014-04-29*\|2014-04-28*\|2014-04-27*\|2014-04-26*\|2014-04-25*\|2014-04-24*\|2014-04-23*\|2014-04-22*\|2014-04-21*\|2014-04-20*' /test_custom.log > new_file.log

Какие-либо предложения?

1 ответ1

1

* в регулярном выражении имеет другое значение, чем в подстановочном знаке имени файла. * означает повторить предыдущую вещь ноль или более раз. Чтобы просто сказать «что-нибудь», вы должны использовать .* , Где . расшифровывается как "любой персонаж".

Более того, если вы хотите, чтобы все строки начинались с дат, отбросьте -w и добавьте ^ чтобы соответствовать началу строк:

grep '^\(2014-04-30\|2014-04-29\|2014-04-28\|2014-04-27\)'

Даты заключены в круглые скобки, поэтому вам не нужно повторять ^ каждый раз.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .