Надеюсь, вы могли используйте perl
$ dt=`perl -e 'print substr(scalar localtime(time-86400),0,10)'`
$ echo "$dt"
Sat Dec 5
$ grep "$dt" <logfile>
В приведенном выше коде perl
time
возвращает текущее время в секундах с начала эпохи. Чтобы получить вчерашний день, вычитая 86400 секунд и скаляр печатает его в удобочитаемом формате. I Предположим, вам нужно просто вчера в формате DAY MON DT
, чтобы вы могли найти все строки, соответствующие этому дню, независимо от времени. Чтобы просто получить необходимые поля, используйте substr
для печати первых 10 символов и сохранение в переменной dt
. Вы можете использовать эту переменную с grep
.
Сценарии редактирования текста — это то, для чего ed
:
ed file <<'SCRIPT'
/%%%23begin/+1,/%%%23end/-1d
/%%%23begin/a
xxxxxxxx \\
yyyyyyyy \\
zzzzzzzzz \\
tttttttt \\
.
wq
SCRIPT
Сначала удалите содержимое между (, но не включая маркеры ), затем добавьте желаемый текст после начального маркера. «Точка» завершает ввод. Сохранить и выйти.