改行文字を含むファイルがあります。ファイルをサーバーに
公開すると、サーバーはそれを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'
改行文字をバックスラッシュに変更します(そしてn
2番目のグループに追加の文字が含まれています)。改行を終了する行はバッファにロードされず、内部で処理されるため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'
それは正確にあなたが要求したように改行文字を削除します。)