Если вы хотите заменить предполагаемую строку -exists enabled
, которая следует за первой строкой [7_addons]
в файле, вы можете использовать ed!
ed -s input <<< $'/^\[7_addons\]$\n/^enabled=0\nc\nenabled=1\n.\nw\nq' > /dev/null
Начиная снаружи внутрь, он выполняет ed
в режиме скрипта в файле input
и передает ему строку в кавычках ANSI в виде строки здесь -, а затем перенаправляет вывод в /dev/null. Перенаправление /dev/null просто отбрасывает сообщение ed о строках, которые он находит при выполнении своей работы.
Здесь строка -разбивается на следующие\n
-разделенные команды:
/^\[7_addons\]$
--поиск вперед строки, которая точно[7_addons]
(привязана к началу(^
)и концу($
)строки /^enabled=0$
--затем искать строку, которая точно соответствуетenabled=0
c
--изменить эту строку enabled=1
--к этому тексту .
--конец текста замены w
--записать файл на диск q
--уволился На входе этого образца:
[1_addons]
enabled=0
foo=bar
[7_addons]
foo=baz
enabled=0
other=bat
[8_addons]
foo=quux
Результирующий файл:
[1_addons]
enabled=0
foo=bar
[7_addons]
foo=baz
enabled=1
other=bat
[8_addons]
foo=quux
Вы говорите «файл с ». Можно сжимать файлы параллельно, используя параллельный компрессор, отличный от -. Но для этого потребуется модифицировать код, вызывающий компрессор (. У него уже есть такая возможность? ).
Возможно использование параллельного компрессора для каждого файла, но степень сжатия будет снижена. например. независимо сжимая две половины. Но тогда, если две половинки одинаковые, компрессор его не увидит, и компрессия пропадет.
Если lxc publish
сжимает файлы (для большего сжатия ), то даже первый вариант уменьшит сжатие по той же причине, что указана во 2-м абзаце.
Редактировать:
Сказав, что я только что посмотрел на некоторые тесты для pigz
. Я думаю, используя дефолтные по -притирочные блоки (я сейчас прочитал руководство ), и они ничем не хуже, чем gzip
.
Надеюсь, вы найдете решение.