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

如何使用sed命令在指定字符后添加换行符?

使用sed实现指定位置添加换行与缩进

你的需求完全可以用sed实现,先说说你之前命令无效的原因:你写的sed 's/{},/\n/' test.txt是要匹配{},这个子串,但你的输入里根本不存在这个组合,自然匹配不到,所以没效果。

针对你的输入字符串,这里给出两种场景的sed命令(对应输入里的双引号是"还是"):

场景1:输入字符串包含普通双引号

假设test.txt内容为:

{"foo" = "foovalue","bar" = "barvalue"}

执行以下GNU sed命令:

sed -e 's/{/{\n  /' -e 's/","/",\n  "/' -e 's/}/\n}/' test.txt

每一步的作用:

  • s/{/{\n /:把左大括号{替换成{+换行+两个空格,让第一个键值对换行并缩进
  • s/","/",\n "/:把","替换成",+换行+两个空格+",实现每个键值对之间的换行缩进
  • s/}/\n}/:把右大括号}替换成换行+},让右大括号单独占一行

执行后输出就是你要的格式:

{
  "foo" = "foovalue",
  "bar" = "barvalue"
}

场景2:输入字符串包含"转义字符

如果test.txt内容为:

{"foo" = "foovalue","bar" = "barvalue"}

只需把命令里的"替换成"即可:

sed -e 's/{/{\n  /' -e 's/","/",\n  "/' -e 's/}/\n}/' test.txt

执行后输出:

{
  "foo" = "foovalue",
  "bar" = "barvalue"
}

注意:如果是BSD sed(比如macOS自带的sed),直接用\n可能不生效,需要换成\加换行,或者使用$'\\n'来表示换行符,比如把命令里的\n替换成$'\\n'。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 21:48:31