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

如何将起始模式{与结束模式}之间的多行内容合并为单行?

解决指定模式范围内多行转单行的问题

需求说明

当文本中出现起始模式{和结束模式}时,需将两者之间的所有多行内容合并为单行,同时调整周边文本格式(例如将结束模式后的内容移至下一行)。

原始输入内容

执行cat test.txt得到的内容:

qwe rty

uio {asd

fgh jkl

zxc} vbn

mqw rty

期望输出结果

qwe rty

uio {asd fgh jkl zxc}

vbn

mqw rty

解决方案

使用awk命令即可实现该需求,通过状态标记判断是否处于需要合并的内容范围内:

awk '/{/{flag=1; sub(/{/,"{ "); printf "%s", $0; next}
     /}/{flag=0; sub(/}/," }"); printf " %s\n", $0; next}
     flag{printf " %s", $0; next}
     1' test.txt

命令解释

  • 匹配到{时,设置状态标记flag=1,给{后添加空格,打印当前行并跳过后续处理;
  • 匹配到}时,取消状态标记flag=0,给}前添加空格,打印当前行并换行;
  • 当flag=1(处于合并范围内)时,以空格连接当前行内容,不换行;
  • 最后的1表示打印所有未被上述规则处理的行(即不在合并范围内的行)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.18 03:52:25