我有一个包含换行符的文件。
我通过将文件发布curl
到将其解析为 json 的服务器。
由于换行符,它拒绝请求。
但是当我这样做时:
$(echo "$MY_DATA" | sed 's/$//' | tr -d '\n\r')
它有效,但新行字符消失了。
如何转义文本以保留换行符?
我试过了tr '\n' '\\n'
,sed 's/\n/\\n/g
但两种方法都没有奏效
我有一个包含换行符的文件。
我通过将文件发布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 分隔的“行”,而不是换行符分隔):和 Perl(与 sed 不同,它确实在缓冲区中使用换行符,因此
s///
可以使用它):(
tr -d '\n\r'
确实会删除换行符,这正是你要求它做的事情。)用于
jq
正确地对数据进行 JSON 编码:( ) 和
-s
( )选项一起使用时,将读取原始输入数据并从中创建单个 JSON 编码字符串。--slurp
-R
--raw-input
例子:
输出: