Bash
如何為json轉義換行符?
我有一個包含換行符的文件。
我通過將文件發佈
curl
到將其解析為 json 的伺服器。由於換行符,它拒絕請求。
但是當我這樣做時:
$(echo "$MY_DATA" | sed 's/$//' | tr -d '\n\r')
它有效,但新行字元消失了。
如何轉義文本以保留換行符?
我試過了
tr '\n' '\\n'
,sed 's/\n/\\n/g
但兩種方法都沒有奏效
我假設您想將原始換行符更改為
\n
(反斜杠和n
)。
tr '\n' '\\n'
會將換行符更改為反斜杠(然後n
在第二組中有一個額外的)。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'
確實會刪除換行符,這正是你要求它做的事情。)