Попробуйте это:
$ # tested on GNU-sed, not sure of syntax for other versions
$ sed '/{{Info DOC/,/}}/ { s/{{\(Info DOC\)/=== \1 ===/; /}}/d }' ip.txt
=== Info DOC ===
|author= ME
|company= MY COMPANY
|classification= RESTRICTED
/{{Info DOC/,/}}/
из строки, содержащей {{Info DOC
, в строку, содержащую}}
(см. Диапазон адресов для подробностей )s/{{\(Info DOC\)/=== \1 ===/
преобразовать по мере необходимости /}}/d
удалить этот
Сperl
$ perl -0777 -pe 's/\{\{(Info DOC)(.*?)\}\}\n/=== $1 ===$2/sg' ip.txt
=== Info DOC ===
|author= ME
|company= MY COMPANY
|classification= RESTRICTED
-0777
глотать весь файл, поэтому это решение не подходит для слишком большого входного файла .*?
не -жадное сопоставление s
модификатор, позволяющий .
также соответствовать символу новой строки В isolinux.cfg
параметры загрузки указываются в строке APPEND, а не в строке KERNEL. Таким образом, ваш init=copy1.bs
должен вместо этого перейти к строке APPEND.
И если вы используете опцию init=
, это означает запуск вашего сценария оболочки как процесса #1 :вместо настройки обычной среды, например. несколько виртуальных консолей, он будет запускать только этот один сценарий... и как только этот сценарий завершится, ядро запаникует (= аварийное завершение ), поскольку процесс #1 умер.
В зависимости от того, как именно устроен файл initrd Finnix, использование параметра init=
может также запускать ваши сценарии в ситуации, когда им потребуется дублировать некоторые или все функции сценариев запуска Finnix -до они действительно могут сделать что-нибудь полезное.
Вместо этого вы можете придумать свой собственный параметр загрузки. Параметры загрузки появятся в /proc/cmdline
, даже если они неизвестны ядру, и вы можете просто создать сценарий запуска -, который читает /proc/cmdline
, выбирает оттуда значение пользовательского параметра, а затем использует его для выполнения. другой сценарий в выбранном вами месте. Этот подход может быть проще в отладке, чем использование стандартного параметра init=
.
Корневая файловая система Finnix находится внутри файла finnix/arch/x86/root.img
. У меня нет времени, чтобы полностью проанализировать это прямо сейчас, но я предполагаю, что initrd.xz
устанавливает RAM-диск и загружает туда содержимое root.img
, так что компакт-диск может быть извлечен при использовании Finnix..
Чтобы поместить ваши скрипты в файл root.img
, вы должны смонтировать файл образа, (это образ файловой системы squashfs ), скопировать содержимое в другой каталог, добавить в него свои собственные файлы, а затем использовать mksquashfs
команда (в пакете squashfs-tools
)для создания нового файла образа.