Bash имеет функцию, названную расширение параметра , который, среди прочего, позволяет строковую замену на основе так называемого шаблоны (шаблоны напоминают регулярные выражения, но существуют принципиальные различия и ограничения). [исходная строка flussence: Bash имеет регулярные выражения, но они хорошо скрыты:]
следующее демонстрирует, как удалить весь пробел (даже от внутренней части) от значения переменной.
$ var='abc def'
$ echo "$var"
abc def
# Note: flussence's original expression was "${var/ /}", which only replaced the *first* space char., wherever it appeared.
$ echo -n "${var//[[:space:]]/}"
abcdef
mochijson2 работает со строками как двоичными файлами, списками как массивами и декодирует только UTF-8. Mochijson декодирует и кодирует кодовые точки Unicode.
Чтобы создать глубокую структуру, я сделал следующее:
2> L = {struct, [{key2, [192]}]}.
{struct,[{key2,"?"}]}
3>
3> L2 = {struct, [{key, L}]}.
{struct,[{key,{struct,[{key2,"?"}]}}]}
4>
4> mochijson:encode(L2).
[123,"\"key\"",58,
[123,"\"key2\"",58,[34,"\\u00c0",34],125],
125]
Итак, если вы рекурсивно создадите структуру данных с помощью списков, все будет в порядке. Я не уверен, почему не поддерживаются глубокие структуры, но, похоже, они не поддерживаются, по крайней мере, не так, как вы пытаетесь их создать. Может быть, кто-то знает более умный способ сделать это.
Вы также можете проверить эту ветку: mochijson2 examples!
или