В общем и целом
Я бы предположил, что любой, кто искал, как вставить / добавить текст в начало / конец файла, вероятно, также должен знать, как сделать другой.
cal | \
gsed -E \
-e '1i\{' \
-e '1i\ "lines": [' \
-e 's/(.*)/ "\1",/' \
-e '$s/,$//' \
-e '$a\ ]' \
-e '$a\}'
объяснение
Это cal
выводится по конвейеру в gnu- sed
( вызывается gsed
на macOS, установленном через brew.sh ) с расширенным RegEx ( -E
) и применены 6 «скриптов» ( -e
), а разрывы строк экранированы \
для удобства чтения. Сценарии 1 и 2 используются 1i\
для «в строке 1 вставить». Сценарии 5 и 6 используются $a\
для «в строке <последний>, добавить». Я выровнял текстовые выходные данные по вертикали, чтобы код представлял то, что ожидается в результате. Сценарии 3 и 4 выполняют подстановки (последние применяются только к «line <last>»). Результатом является преобразование вывода команды в допустимый JSON.
выход
{
"lines": [
" October 2019 ",
"Su Mo Tu We Th Fr Sa ",
" 1 2 3 4 5 ",
" 6 7 8 9 10 11 12 ",
"13 14 15 16 17 18 19 ",
"20 21 22 23 24 25 26 ",
"27 28 29 30 31 ",
" "
]
}