RIOT — хороший вариант. Это операционная система на основе микроядра, специально разработанная для приложений IoT. Несколько команд на вашем терминале Mac / Linux, и вы в оболочке RIOT.
Для получения более подробной информации перейдите по ссылкам ниже:
RIOT -ОС:Их официальный сайт
RIOT -на -Git:RIOT на github
Если CONTENT
находится на отдельной строке, поместите замену в файл tmp
и затем используйте
sed -e '/CONTENT/r tmp' -e '/CONTENT/d' inp
, который сначала вставляет содержимое файла tmp
после вашего совпадения, а затем удаляет строку сCONTENT
(ответ в комментарии @philippos у меня не работает, файл должен быть введен после совпадения, а затем совпадение удалено)
Вы уже используете временный файл output.tmp
Вместо того, чтобы пытаться хранить весь контент в памяти, а затем модифицировать его (, т. е. читать шаблон, а затем заменять заполнитель)
Я бы попробовал записать разделы во временный файл в том порядке, в котором они нужны вам в выводе.
т. е. запишите первую часть шаблона запроса JSON в файл output.tmp, используя язык, на котором вы его создаете.
, затем выполните base64./myreport.html >> output.tmp
, чтобы добавить содержимое,
затем добавьте остальную часть шаблона запроса JSON в файл output.tmp после содержимого.
Подстановка не требуется, требуется гораздо меньше памяти. Вам не нужны sed ИЛИ awk для этой задачи, которые являются языками программирования для манипулирования данными, и вам действительно не нужно ничем манипулировать.
Кроме того, избегайте ненужного использования кат. Это для объединения файлов. Он слишком часто используется из-за его поведения по умолчанию при чтении файла и отображении его без изменений. Вам не нужен кот, чтобы открыть файл для вас. Поскольку base64 может считывать свой ввод из STDIN, например. в конвейере он также может читать файлы:
cat./myreport.html | base64
лучше написаноbase64./myreport.html