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

如何使用sed/awk将文件中以set开头的行与前一行合并

文本合并需求解决方案

适配方案

1. GNU sed 实现(兼容4.2.2版本)

核心逻辑为每次读取两行内容,判断第二行是否以set开头,符合条件则合并两行,否则按正常行输出:

# 仅输出结果,不修改原文件
sed 'N;/\nset/s/\n/ /;P;D' 目标文件路径

# 直接修改原文件
sed -i 'N;/\nset/s/\n/ /;P;D' 目标文件路径

2. awk 实现

逻辑更直观,可处理各种边界场景:

awk '{if(/^set/) {print prev " " $0; prev=""} else {if(prev!="") print prev; prev=$0}} END{if(prev!="") print prev}' 目标文件路径

原有命令失效原因

  • 你之前使用的sed命令采用全量读入文件后替换的逻辑,s/\nset//g会直接删除换行和set字符,最终结果会变成previous line...而非预期的带空格拼接,同时如果存在连续多个set开头的行也会处理异常。
  • 你之前使用的awk命令存在两个问题:一是\set属于多余转义,匹配逻辑错误;二是RS=""设置为按空白段落分割,不符合普通文本文件的行处理场景,因此没有生效。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 18:18:01