grep файл журнала, запускающийся с определенного времени в конец файла

Вы хотите запустить brew install boost @ 1,55

$ brew search boost
==> Formulae
boost ✔                           boost-build                       
boost-python                      boost-python@1.59                 
boost@1.57                        boost@1.60 ✔
boost-bcp                         boost-mpi                     
boost-python3                     boost@1.55                        boost@1.59

==> Casks
boostnote                                focus-booster                            
iboostup                                 nosqlbooster-for-mongodb                 
turbo-boost-switcher

-121--61378-

При обновлении пакетов в стабильном выпуске Debian эти пакеты не сильно изменятся (в конце концов, стабильные ). Вам не понадобится apt-get dist-upgrade .

Таким образом, изменение зависимостей, подобных указанным в apt-gets manpage, произойдет только при изменении версии (например, wheezy на jessie ) или при использовании тестирования или нестабильных , которые являются скользящими версиями .

Так что да, способом apt-get dist-upgrade обычно используется для обновления дистрибутива до следующей версии (или в случае обновления выпусков до последней версии).

-121--228927-

Вы можете использовать хитрость:

ps aux | grep '[f]fmpeg'

Здесь [] - это формат, используемый для указания диапазона символов для сопоставления с помощью grep , мы используем [f] для сопоставления только f . Поскольку [f] уже преобразуется в f , литерал ps aux | grep 'ffmpeg' не отображается в выходных данных ps .

Также обратите внимание, что появление ps aux | grep 'ffmpeg' на выходе ps aux | grep 'ffmpeg' в основном зависит от времени отображения таблицы процесса.

Обратите внимание, что существует программа с именем pgrep для поиска процессов, если ps aux не является абсолютно необходимой.

3
14.08.2018, 13:40
3 ответа

Вы можете искать первую строку, соответствующую определенной строке (, т. е. July 29 2018 21:, для всего после 21:00 ). Если у вас есть этот номер строки, вы можете tailоткрыть файл, начинающийся с найденного номера строки.

   $ man tail
   -n, --lines=[+]NUM
          output the last NUM lines, instead of the last 10; or use -n +NUM to output starting with line NUM

мой пример:

$ log=/var/log/syslog

# get line number
$ first_line=$(grep -no "Aug 14 08:" $log | tail -n1 | cut -d: -f1)

# count the lines from $first_line to EOF
$ tail -n +$first_line $log | wc -l
24071

# output the content starting with $first_line
$ tail -n +$first_line $log

# line count of the whole file:
$ wc -l $log
70896 /var/log/syslog
0
27.01.2020, 21:21

С помощью sedможно сделать

sed -n '/July 29 2018 21:/,/$!d/p' file

Это даст вам все строки между 29 июля 2018 21 :**и последней строкой файла

0
27.01.2020, 21:21

Я бы использовал для этого perl, чтобы анализировать отметку времени в каждой строке:

$ cat file
June 5 2018 00:00:00 do not print
July 29 2018 20:59:59 do not print
July 29 2018 21:00:00 print me
July 29 2018 21:00:01 print me

$ perl -MTime::Piece -sane '
    BEGIN {
        $start = Time::Piece->strptime($startdate, "%B %e %Y %T");
    }
    # the string "@F[0..3]" is the first 4 words on the line
    $time = Time::Piece->strptime("@F[0..3]", "%B %e %Y %T");
    print if $time >= $start;
' -- -startdate="July 29 2018 21:00:00" file
July 29 2018 21:00:00 print me
July 29 2018 21:00:01 print me

Эта версия несколько более эффективна, так как она прекращает синтаксический анализ метки времени после того, как была видна начальная дата. (Предполагается, что файл находится в возрастающем хронологическом порядке):

perl -MTime::Piece -sane '
    BEGIN {
        $start = Time::Piece->strptime($startdate, "%B %e %Y %T");
    }
    unless ($go) {
        $time = Time::Piece->strptime("@F[0..3]", "%B %e %Y %T");
        $go = $time >= $start;
    }
    print if $go;
' -- -startdate="July 29 2018 21:00:00" file
2
27.01.2020, 21:21

Теги

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