Bash

如何為json轉義換行符?

  • July 11, 2021

我有一個包含換行符的文件。

我通過將文件發佈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'確實會刪除換行符,這正是你要求它做的事情。)

引用自:https://unix.stackexchange.com/questions/453883