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

如何使用sed删除日志中seq-cont括号块内的换行与多余空白

sed实现删除指定大括号范围内的空白字符

测试文件内容

你当前的日志文件结构如下:

test {
seq-cont {
                        0,
                        67,
                        266
                        },
                grp-id 505
        }
}
test{
        test1{
                val
        }
}

可通过以下命令快速生成测试文件:

echo -e "test {
seq-cont {
			0,
			67,
			266
			},
		grp-id 505
	}
}
test{
	test1{
		val
	}
}
" > logfile

需求说明

仅删除seq-cont {到其配对闭合}之间的所有空白字符,其他区域格式完全保留,期望输出如下:

test{seq-cont{0,67,266},
                       grp-id 505
        }
}
test{
        test1{
                val
        }
}

正确sed命令(适配GNU sed)

sed '/seq-cont {/{
  :join
  /}[^}]*$/!{ N; b join }
  s/[[:space:]\n]//g
  s/},/&\
/
}' logfile

如果需要直接修改原文件,添加-i参数即可:

sed -i '/seq-cont {/{
  :join
  /}[^}]*$/!{ N; b join }
  s/[[:space:]\n]//g
  s/},/&\
/
}' logfile

命令逻辑

  1. 扫描到含seq-cont {的行后进入处理逻辑
  2. 不断读取下一行合并到当前模式空间,直到匹配到seq-cont对应的闭合}
  3. 删除模式空间内所有空白、换行字符,完成范围内压缩
  4. 在},后重新插入换行,保证后续grp-id等内容的原有缩进完全保留
  5. 其他未匹配到seq-cont的行直接输出,不会改动其他代码块的格式

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 06:15:04