Решение:
Ответом на мой вопрос решения является следующая команда:
sed -En 's|^Link[[:space:]]*([^[:space:]]*)[[:space:]]*([^[:space:]]*)$| "\2" : "\1"|p' ./backward
Работает как положено и создает тело вывода JSON
TL / DR:
Именно ответ Рено заставил меня понять, что я должен использовать [[:space:]]
вместо [/s]
.
После выполнения его команды у меня остались пара нежелательных строк:
A) комментариев, которые файл содержит вверху
т.е. # This file is...
(Это было решено путем указания sed
не печатать строки, которые не совпадают (обнаружено, что здесь ) путем добавления флага -n
в начале и флага p
в конец сценария)
и
B) некоторые строки, которые не были преобразованы
т.е. Link Pacific/Pago_Pago Pacific/Samoa
(Это было решено сообщением sed
, что оно соответствует чему-либо, кроме пробела в группе [^[:space:]]
)
Наконец весь сценарий:
выглядит так:
#!/bin/bash
echo "{";
sed -En 's|^Link[[:space:]]*([^[:space:]]*)[[:space:]]*([^[:space:]]*)$| "\2": "\1"|p' ./backward
echo "}";
И запуск сценария выглядит так: sh index.sh > timezones.json
выводит красивый файл json.