Solaris / Unix: как отображать только новые строки из файла журнала с момента последней проверки - PullRequest
0 голосов
/ 16 января 2019

Машина SunOS 5.10, поэтому она ведет себя немного иначе, чем Unix. У меня есть файл журнала ошибок, который заполняется несколькими пользователями. Я получаю свои записи по:

tail error.log | grep USER1

Я получаю результаты в формате:

Jan 16 09:06:18 XYZ USER1
Jan 16 09:22:12 XYZ USER1
Jan 16 11:22:30 XYZ USER1

Мне нужна команда, которая будет печатать только те ошибки, которые были зарегистрированы после последней проверки, и ничего не печатать. Я решил получить мою последнюю запись в другой файл по:

grep USER1 error.log | tail -1 > temp_error.log

Оттуда я бы вырезал только первые символы, содержащие дату, по:

less temp_error.log | cut -c 1-15

Это даст мне результат:

Jan 16 11:22:30

Затем я использую команду sed, чтобы получить все строки после этой строки в файле:

sed -e '1,/Jan 16 11:22:30/d' error.log | grep USER1

Это бы сработало, но, конечно, мне нужно каждый раз вставлять дату. Я решил автоматизировать это с помощью переменной, выполнив следующие команды:

LAST_ENTRY=`less temp_error.log | cut -c 1-15` 
sed -e '1,/$LAST_ENTRY/d' error.log | grep USER1

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

...