jsonの改行文字をエスケープする方法は?

jsonの改行文字をエスケープする方法は?

改行文字を含むファイルがあります。ファイルをサーバーに
公開すると、サーバーはそれをjsonに解析します。改行文字のため要求を拒否します。しかし、私がこれを行うと: curl

$(echo "$MY_DATA" | sed 's/$//' | tr -d '\n\r')  

動作しますが、新しい行文字は消えます。
改行を維持するためにテキストをエスケープする方法は?
試しましたが、どちらの方法も機能しtr '\n' '\\n'ませんsed 's/\n/\\n/g

ベストアンサー1

\n元の改行文字を(バックスラッシュと)に変更したいとしますn

tr '\n' '\\n'改行文字をバックスラッシュに変更します(そしてn2番目のグループに追加の文字が含まれています)。改行を終了する行はバッファにロードされず、内部で処理されるためsed 's/\n/\\n/g動作しません。sed

いくつかの選択肢は、次のようなGNU sedです-z(入力を改行で区切るのではなく、NULで区切られた「行」として使用)。

sed -z 's/\n/\\n/g'

そしてPerl(sedとは異なりするバッファから改行文字を取得してs///処理します。)

perl -pe 's/\n/\\n/g'

tr -d '\n\r'それは正確にあなたが要求したように改行文字を削除します。)

おすすめ記事