Вот awk
один -вкладыш.
awk '/^abc/ {prev = $0; prevabc = "true"}; /^xyz/ {if (prevabc == "true") {print prev; prevabc = "false" } ; print}' file.txt
/^abc/ {prev = $0; prevabc = "true"};
:Если строка начинается с abc
, не печатайте ее, а вместо этого сохраните значение строки в переменной prev
и укажите, что эта строка начинается с abc
, сохранив true
в переменной prevabc
. /^xyz/ {if (prevabc == "true") {print prev; prevabc = "false" } ; print}
:Если строка начинается с xyz
, выполните следующие действия. if (prevabc == "true") {print prev; prevabc = "false" }
:Если предыдущая строка начиналась сabc
(из-за prevabc == "true"
), то напечатайте предыдущую строку prev
и сбросьте prevabc
на false
. print
:Так как эта строка начинается с xyz
, выведите и эту строку. pivot_root
на RAM-диск. exec
оболочка busybox. kill
что-либо еще, работающее на машине, препятствующее следующему шагу. Возможно, вам придется также поместить ssh-сервер на электронный диск или использовать что-то вроде busybox nc -l -l -p1234 -e busybox sh
, чтобы предоставить вам альтернативный доступ. dd
для очистки «настоящих» дисков. Обратите внимание, что эта строка busybox не дает вам «терминал», а только оболочку, так что многие вещи выглядят странно. И если вы используете telnet
для подключения к нему, это становится еще более странным. В частности, вы получаете возврат каретки перед каждым переводом строки, поэтому ввод pwd
не работает, но последующее добавление пробела работает. Я рекомендую использовать nc
или busybox nc
в качестве клиента.
Вы не можете убить init и остаться безнаказанным. Вы можете или не можете размонтировать диски, убив все, что началось с этого диска.
Я думаю, что есть две альтернативы.
poweroff -fn
.