Это источник ваших проблем:
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
Использование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
не является строго необходимым.