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

如何用Bash替换反斜杠、转义换行符并生成合法JSON

问题1:如何在Bash中全局将文本文件里的反斜杠替换为双反斜杠?

直接使用sed命令即可完成全局替换,命令如下:

sed -i 's/\\/\\\\/g' 目标文件名.txt
  • -i 参数表示直接修改原文件;若不需要修改原文件,可去掉-i,将结果重定向到新文件:sed 's/\\/\\\\/g' 原文件名.txt > 新文件名.txt
  • s/\\/\\\\/g 是核心替换规则:
    • \\ 用于匹配原文件中的单个反斜杠(sed中反斜杠需转义)
    • \\\\ 表示替换为两个反斜杠(每个反斜杠都需要转义)
    • g 代表全局替换,会处理文件中所有匹配到的反斜杠
问题2:将文件换行符替换为\\n并生成合法JSON

你的现有脚本未处理换行符的替换逻辑,以下是两种修正后的实现方案:

方案一:用Bash参数扩展处理

#!/bin/bash

# 读取文件内容到变量,保留原始换行符
expected_output=$(<file.txt)
# 将换行符替换为JSON标准的换行转义符\\n
expected_output=${expected_output//$'\n'/\\n}
# 将原文件中的反斜杠替换为JSON标准的反斜杠转义符\\\\
expected_output=${expected_output//\\/\\\\}
# 格式化输出为指定JSON格式
JSON_FMT='{"output":"%s"}'
printf "$JSON_FMT\n" "$expected_output" >> aaa.txt

方案二:用sed命令批量处理

#!/bin/bash

# 用sed一次性完成反斜杠转义和换行符替换
processed_content=$(sed -e 's/\\/\\\\/g' -e ':a;N;$!ba;s/\n/\\n/g' file.txt)
# 格式化输出为指定JSON格式
JSON_FMT='{"output":"%s"}'
printf "$JSON_FMT\n" "$processed_content" >> aaa.txt
  • sed的第二个命令:a;N;$!ba;s/\n/\\n/g作用是:先将文件所有内容合并到同一处理空间,再把所有换行符统一替换为\\n

两种方案最终都会生成符合要求的合法JSON:

{"output":"Hello\\nmate"}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.02 13:12:49