Печатать содержимое файла только после последнего появления токена?

Это источник ваших проблем:

dpkg: error processing package libplank-common (--configure):
 package is in a very bad inconsistent state; you should
 reinstall it before attempting configuration

Чтобы переустановить пакет, запустите

sudo apt-get install --reinstall libplank-common

Это может не сработать, в этом случае вы можете попробовать

sudo dpkg -i /var/cache/apt/archives/libplank-common*0.11.4+git20190318.fb624c21-0elementary5.0.1*.deb
8
25.08.2021, 05:32
1 ответ

Использованиеsedбезtac:

sed \
    -e '/STARTING SESSION/h' \
    -e '//,$ { //!H; }' \
    -e '$!d' \
    -e x logfile.log

или, используя ;между выражениями в одной строке,

sed '/STARTING SESSION/h; //,$ { //!H; }; $!d; x' logfile.log

Аннотированный вариант:

# If this line matches our trigger, save buffer in hold-space (overwrites).
/STARTING SESSION/ h

# In the range from the trigger to the end, append buffer to hold-space,
# but only if the current line isn't the trigger.
# (// re-uses the most recent expression)
//,$ { //!H; }

# If we're not at the end, restart with the next line without outputting anything.
$! d

# At the end, swap the hold-space into the buffer.
x

# (buffer is implicitly printed)

Резюме :Этот sedскрипт сохраняет все строки между триггером и концом документа в удерживаемом -пространстве sed. Всякий раз, когда триггер найден, пространство удержания -очищается. В конце выводится пробел -.

Если триггер не найден, вывод не производится.

Также обратите внимание, что при этом обязательно будет прочитан весь файл.


Аналогичный подход сawk:

awk '
    /STARTING SESSION/ { delete hold; i = 1 } 
    i { hold[i++] = $0  } 
    END { for (j = 1; j < i; j++) print hold[j] }' logfile.log

Здесь мы начнем собирать данные в массиве holdпосле того, как найдем триггер (, когда установим iв единицу в первый раз ). Мы удаляем собранные данные и сбрасываем iдо единицы каждый раз, когда нажимаем на курок.

В конце выводятся все собранные строки.

Утверждение delete holdне является строго необходимым.

5
25.08.2021, 08:20

Теги

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