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

如何用sed删除包含ID_且行尾为奇数的行?现有命令执行后文件无变化

如何用sed删除包含ID_且行尾为奇数的行?现有命令执行后文件无变化

我来帮你分析下问题所在,你之前的sed命令没生效,核心是正则匹配的逻辑没找准~

先说说你原来的命令为啥不管用:

  • 第一个命令 sed '/ID_[13579]/d' file.txt:这个正则只会匹配 ID_后面直接跟奇数 的行(比如ID_1 xxx),但你的目标行是ID_0111 xxx这种,ID_后面是四位数字,奇数在最后一位,前面还有其他数字,所以这个正则根本匹配不到这些行,自然不会删除任何内容。
  • 第二个命令 sed 's|ID_[13579]$| |g':首先这是替换操作不是删除操作,其次ID_[13579]$是匹配行尾就是ID_加奇数的情况,但你的行尾是xxx,完全不匹配,所以替换也不会生效。

正确的sed命令

要精准匹配「包含ID_,且ID_后面的数字最后一位是奇数」的行,我们需要调整正则:

# 适配任意长度数字的情况
sed '/ID_[0-9]*[13579] /d' file.txt

# 如果ID_后面固定是四位数字(像你的例子里那样),可以更精确:
sed '/ID_[0-9]\{3\}[13579] /d' file.txt

命令解释:

  • ID_:匹配行开头的固定标识;
  • [0-9]*:匹配任意数量的数字(如果是固定四位的话,[0-9]\{3\}匹配前三位数字);
  • [13579]:匹配最后一位奇数;
  • 后面的空格:匹配数字和xxx之间的分隔符,确保我们匹配的是ID_后面的数字部分;
  • d:sed的删除命令,匹配到符合条件的行就删除。

执行这个命令后,你的文件就会得到期望的结果:

ID_0112 xxx
ID_0114 xxx
xxxxxxxxxxxxxxxx

备注:内容来源于stack exchange,提问作者justaguy

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.21 11:05:31