Строки JSON не могут содержать буквенные (то есть неэкранированные) символы возврата или символы новой строки.
Обычный способ указать «символ новой строки» в строке JSON - использовать двухсимвольную последовательность \n
.
Таким образом, в вашем примере JSON .ans и .ans2 содержат две спецификации символов новой строки, тогда как .ans2 не имеет спецификаций символов новой строки, поскольку трехсимвольная подпоследовательность \\n
обозначает буквенный обратный слеш, следующий за буквойn
.
Если (например) вы хотите «декодировать» .ans как «необработанную» строку (т. Е. С буквенными символами новой строки), вы можете использовать программу командной строки, jq, вот так:
$ jq -r .ans1 <<< "$json"
first line
second line
third line