файл журнала: только обработайте записи, более старые, чем “MMM DD HH:MM:SS”

Ответ - то, что нет хорошего Linux для разработки enless, Вы создаете один, и никакой другой Linux действительно обеспечивают так же в этой области как хинду. Вы компилируете все из источника (что-то, с чем необходимо быть более хилыми быть dev. Процесс установки преподает Вам больше системе, чем какой-либо другой дистрибутив на ответ много вопросов, которые Вы собираетесь иметь, поскольку Вы создаете приложения.

Большая часть - Вы, может выбрать, какие программы Вы хотите разработать. Если Вы хотите установку Java javac или gcj или обоих. Общественная поддержка не похожа ни на кого другого поэтому, если у Вас будут вопросы, то им ответят или получат Вас, куда необходимо пойти для нахождения ответа.

Каждый IDE, о котором можно думать, доступен для "появлений" / установка в хинду. Хотя весьма достоверно легко установить или "простой" понять, нижний программирует и если бы Вы не можете установить копию хинду, я не хотел бы запускать Ваши программы на своей машине. У большинства людей трудностей есть установка, она получена из отсутствия фундаментальных знаний Linux. Я обещаю, что Вам понравится он после того, как у Вас будет все, устанавливают способ, которым Вам нравится он.

После того, как Вы установили его, можно составить tar назад и поместить его на любой компьютер, для которого у Вас есть время, чтобы реконфигурировать ядро или использовать его восстановление, когда вещи выходят из-под контроля.

1
06.08.2013, 23:44
5 ответов

Вы могли записать немного bash сценарий, который использует date проанализировать даты:

#!/usr/bin/env bash

## Your date threshold
limit="Jul 20 15:00:00"
## Your limit in seconds since the UNIX epoch
limit_seconds=$(date -d "$limit" +%s)

while read line; do
    ## Extract the date and convert to seconds since epoch for comparison
    date=$(date -d "$(echo "$line" | cut -d ' ' -f -4)" +%s);
    ## Is this newer than the limit? If yes, print the line
    if [ "$date" -ge "$limit_seconds" ]; then
    echo "$line"
    fi

done

Сохраните этот сценарий в своем пути (например. /usr/local/bin/parse_log.sh) и можно затем выполнить его как это:

parse_log.sh < /var/log/mylogs.log
2
27.01.2020, 23:53

Вам могло бы быть интересно делать это с жемчугом:

perl -wlne '/^Jul\ 20\ 15\:00\:00/ .. eof() and print' /path/to/logfile.txt

Вы могли бы хотеть скорректировать regex к своим точным потребностям.

0
27.01.2020, 23:53
  • 1
    имейте в виду, что точная строка "20 июля 15:00:00", скорее всего, не будет в журналах. Журнал мог бы быть похожим на это: "Jul 20 14:55:12" "Jul 20 15:02:10" –  Martin Vegter 06.08.2013, 14:20
  • 2
    Кроме того, какой смысл .. eof()? Вы могли просто сказать perl -ne '/^Jul\ 20\ 15\:00\:00/ and print' –  terdon♦ 06.08.2013, 16:45
  • 3
    @terdon, Просто легкий заменять датой, где Вы хотите закончиться... Но действительно, это бессмысленно в этом случае. –  Mimor 06.08.2013, 17:12

Это лучше всего сделано на языке, который делает манипуляции датой легкими. Я предполагаю, что каждая строка журнала начинается с даты в mmm dd HH:MM:SS формат и что все записи в журнале с текущего года.

<var/log/mylogs.log perl -MDate::Parse -e '
    $cutoff = str2time($ARGV[0]);
    while (<STDIN>) {
        print if /^(... [ 0-9][0-9] [0-9][0-9]:[0-9][0-9]:[0-9][0-9])/ and
                 str2time($1) <= $cutoff
    }
' 'Jul 20 15:00:00'

Этот отрывок печатает все строки с более старыми датами. Если Вы хотите более новые записи, инвертируете сравнение (str2time($1) >= $cutoff). При печати более старых записей можно сохранить немного обработки путем помощи, как только также последняя запись достигнута.

<var/log/mylogs.log perl -MDate::Parse -e '
    $cutoff = str2time($ARGV[0]);
    while (<STDIN>) {
        exit if /^(... [ 0-9][0-9] [0-9][0-9]:[0-9][0-9]:[0-9][0-9])/ and
             str2time($1) > $cutoff;
        print;
    }
' 'Jul 20 15:00:00'
0
27.01.2020, 23:53

Попробуйте sed также:

sed -n '/^Jul\ 20\ 15\:00\:00/,/eof()/p' /path/to/logfile.txt
-1
27.01.2020, 23:53

В поисках ответа я нашел эту старую тему

И решил ее, используя grep с опцией -B:

cat /var/log/mylogs.log | grep -B 1000 "Jul 20 15:00:00"

Она покажет строку с этой датой и 1000 строк перед ней. Просто и легко. Вам просто нужно убедиться, что в вашем лог-файле существует дата greping. Точно так же с помощью опции -A вы можете искать более новые записи.

0
27.01.2020, 23:53

Теги

Похожие вопросы