Команда sed выдает слишком длинный список аргументов

RIOT — хороший вариант. Это операционная система на основе микроядра, специально разработанная для приложений IoT. Несколько команд на вашем терминале Mac / Linux, и вы в оболочке RIOT.

Для получения более подробной информации перейдите по ссылкам ниже:

0
15.10.2019, 18:52
2 ответа

Если CONTENTнаходится на отдельной строке, поместите замену в файл tmpи затем используйте

sed -e '/CONTENT/r tmp' -e '/CONTENT/d' inp

, который сначала вставляет содержимое файла tmpпосле вашего совпадения, а затем удаляет строку сCONTENT

(ответ в комментарии @philippos у меня не работает, файл должен быть введен после совпадения, а затем совпадение удалено)

0
28.01.2020, 03:11

Вы уже используете временный файл output.tmp

Вместо того, чтобы пытаться хранить весь контент в памяти, а затем модифицировать его (, т. е. читать шаблон, а затем заменять заполнитель)

Я бы попробовал записать разделы во временный файл в том порядке, в котором они нужны вам в выводе.

т. е. запишите первую часть шаблона запроса JSON в файл output.tmp, используя язык, на котором вы его создаете.

, затем выполните base64./myreport.html >> output.tmp, чтобы добавить содержимое,

затем добавьте остальную часть шаблона запроса JSON в файл output.tmp после содержимого.

Подстановка не требуется, требуется гораздо меньше памяти. Вам не нужны sed ИЛИ awk для этой задачи, которые являются языками программирования для манипулирования данными, и вам действительно не нужно ничем манипулировать.

Кроме того, избегайте ненужного использования кат. Это для объединения файлов. Он слишком часто используется из-за его поведения по умолчанию при чтении файла и отображении его без изменений. Вам не нужен кот, чтобы открыть файл для вас. Поскольку base64 может считывать свой ввод из STDIN, например. в конвейере он также может читать файлы:

cat./myreport.html | base64лучше написаноbase64./myreport.html

0
08.07.2020, 19:44

Теги

Похожие вопросы