Как предотвратить запуск консоли -getty.service?

В показанном вами простом примере это легко сделать. Просто экранируйте символы только в строках, которые не начинаются с{:

$ sed -E '/^[^{]/s|(["\])|\\\1|g' file 
\"a\"     \"b\"     
{"1":"female","2":"197312","3":"359","4":"201109","5":"mail"}
\\uff08\\u524d\\u5bfe\\u5fdc

Однако все становится значительно сложнее, если ваш JSON может занимать несколько строк. Для таких случаев вы можете написать небольшой скрипт, который подсчитывает количество открытий {и закрытий }и применяет замену только тогда, когда эти числа равны (, поэтому, когда мы не в строке JSON ). Что-то вроде:

perl -F'' -ne 'for (@F){$op++ if /{/; $cl++ if /}/; if($cl==$op){s|["\\]|\\$&|g;}print}' file 

Однако это также не работает, если сама строка JSON может содержать {или }, которые не обозначают раздел JSON (, например. {"1":"b-{c}"}или как там ). В таких случаях вместо этого используйте подход Стефана .

1
11.02.2020, 18:07
1 ответ

Проблема в том, что BR2 _TARGET _GENERIC _GETTY _PORT был установлен на «консоли» в buildroot 2018.05. Его нужно изменить на «ttyS0» в buildroot 2019.02.9.

3
28.04.2021, 23:23

Теги

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