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

如何使用sed/awk删除文本行DEST括号内的多余前缀

问题原因

你之前执行的sed 's/\(FILE1A\).*/\1/'命令没有生效,核心有两个问题:

  • 正则仅匹配包含FILE1A的行,包含FILE1B的行完全没有命中规则,不会做任何修改
  • 就算匹配到FILE1A的行,也只处理了FILE1A之后的内容,FILE1A前面的DEST(MYFILExxx.等内容没有被匹配到,不会被修改,因此输出和原内容几乎一致

解决方案

方案1:输出理想结果(不带DEST包裹)

执行以下sed命令:

sed -E 's/DEST\(.*\.(FILE1[AB])\)/\1/' 你的文件名

执行后输出:

TREE(abc/x73/APPLE)   FILE1A
TREE(abc/x74/APPLE)   FILE1A
TREE(abc/x100/APPLE)  FILE1B
TREE(abc/x61/APPLE)   FILE1A

规则说明:

  • -E 开启扩展正则表达式,减少不必要的转义字符
  • 正则匹配DEST(开头、到任意字符加.、再到FILE1A/FILE1B加)的整段内容,将FILE1[AB]捕获为分组,替换时只保留分组内容

方案2:输出可接受结果(保留DEST包裹)

执行以下sed命令:

sed -E 's/(DEST\().*\.(FILE1[AB])\)/\1\2/' 你的文件名

执行后输出:

TREE(abc/x73/APPLE)   DEST(FILE1A)
TREE(abc/x74/APPLE)   DEST(FILE1A)
TREE(abc/x100/APPLE)  DEST(FILE1B)
TREE(abc/x61/APPLE)   DEST(FILE1A)

规则说明:

  • 额外捕获DEST(作为第一个分组,替换时保留DEST(加FILE1[AB]加)的结构即可

如果需要直接修改原文件,给sed命令加上-i参数即可(macOS系统需要写成-i '')。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 11:18:04