You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Linux命令行下用Bash将文件内容转为JSON可用转义字符串

在Bash中读取文件内容并转义为可嵌入JSON的字符串

嘿,这个需求我经常碰到!要把文件内容转成能安全嵌入JSON的字符串,关键是要正确转义所有JSON特殊字符——比如双引号、反斜杠、换行、制表符,甚至一些控制字符,不然直接嵌入会破坏JSON的结构。下面给你几种实用的方法,按推荐程度排序:

1. 最可靠的方法:用jq处理(强烈推荐)

jq是专门处理JSON的工具,它能自动处理所有需要转义的字符,完全不用你手动操心。命令非常简洁:

jq -Rs . your_file.txt

参数解释:

  • -R:把输入当作原始字符串处理,不会解析成JSON
  • -s:把所有输入行合并成一个单独的字符串
  • .:输出处理后的字符串(自动加上双引号,并且完成所有必要转义)

举个例子,如果你的文件内容是:

Hello "World"!
This is a new line.

运行命令后会输出:

"Hello \"World\"!\nThis is a new line."

直接就能嵌入到JSON对象里用了。

2. 无jq时用sed手动转义

如果系统里没有jq,可以用sed来手动替换所有特殊字符。不过这种方法需要你覆盖所有JSON要求转义的字符,容易遗漏,所以只推荐临时用:

sed -e 's/\\/\\\\/g' \
    -e 's/"/\\"/g' \
    -e 's/\n/\\n/g' \
    -e 's/\t/\\t/g' \
    -e 's/\r/\\r/g' \
    -e 's/\f/\\f/g' \
    -e 's/\b/\\b/g' your_file.txt | tr -d '\n'

解释每一步:

  • 先转义\(因为它是转义符,必须最先处理)
  • 然后转义双引号"
  • 接着处理换行、制表符、回车、换页、退格这些控制字符
  • 最后用tr -d '\n'把所有原始换行符去掉,合并成一个单行字符串

注意:这种方法可能没法处理所有Unicode控制字符,如果你的文件里有这类字符,还是优先用jq。

3. 用awk实现类似效果

awk也能完成这个任务,思路和sed类似,但可以一次性读取整个文件,处理起来更灵活:

awk 'BEGIN { RS=""; gsub(/\\/,"\\\\"); gsub(/"/,"\\\""); gsub(/\n/,"\\n"); gsub(/\t/,"\\t"); print "\"" $0 "\"" }' your_file.txt

解释:

  • RS="":设置记录分隔符为空,这样awk会把整个文件当作一个单独的记录读取
  • 用gsub依次替换所有需要转义的字符
  • 最后用print加上双引号输出结果

同样,这种方法也不如jq全面,适合没有jq的场景应急。

内容的提问来源于stack exchange,提问作者user1240018

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.22 10:00:18