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

sed条件删除文本字符时如何保留原列间空格格式?

解决sed命令修改后空格格式丢失的问题

问题分析

你当前的sed命令之所以会改变第三列和第四列之间的空格数量,是因为命令末尾匹配了[[:blank:]]+并将其替换为单个空格,这会覆盖掉原本的空格格式,导致间距被修改。

修正后的命令

要保留原有的空格格式,我们只需要针对目标字段(即包含34的那一段非空白字符)进行修改,完全不触碰字段前后的空格:

sed -E 's/([[:blank:]][^[:blank:]]{10})34([^[:blank:]]+)/\1\2/' file

命令解释

  • ([[:blank:]][^[:blank:]]{10}):捕获目标字段前的空格,加上字段的前10个字符
  • 34:匹配需要删除的两个字符
  • ([^[:blank:]]+):捕获目标字段中34之后的剩余部分
  • \1\2:将匹配到的内容替换为前10个字符加剩余部分,去掉中间的34

这样修改只会移除目标字段中的34,而字段前后的空格完全保持原样。

预期输出

执行修正后的命令后,输出内容如下:

HEADER2023053112460600000004000000000.000002023053112364820230531123707
20230704225151KKKKKKKKK         9C28F1EB011234567890123   0000472MO000000000.00000N82
20230703215437KKKKKKKKK         992CEDE001112233445       0000022MO000000000.00000NSL
20230704111018KKKKKKKKK         A4C0B8000127987654321       0000532MO000000000.00000NSL

可以看到,第三列和第四列之间的空格数量和原始文件完全一致,同时成功删除了目标字段中的34。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.17 09:14:59