Перший і останній
Я б припустив, що кожен, хто шукав, як вставити / додати текст до початку / кінця файлу, ймовірно, також повинен знати, як робити і інші.
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 роблять підстановки (останні застосовуються лише до "рядка <остання>"). Результатом є перетворення командного виводу в допустимий 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 ",
" "
]
}