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

如何用sed或awk删除特定位置至首个空格前的字符(保留空格)

解决文本中删除_i及后续数字直到空格前的问题

我来帮你搞定这个文本处理需求!你需要删除每行里从_i开始到第一个空格前的所有字符(也就是_i加后面的数字),同时保留空格本身,这用sed或者awk都能轻松实现,给你两个可行方案:

方案1:使用sed命令

这个方案直接用正则匹配目标内容并替换为空:

sed 's/_i[0-9]*//' file.txt

原理说明:

  • s/...//是sed的替换语法,把匹配到的内容替换为空
  • _i[0-9]*匹配_i后面跟任意数量的数字(不管是1位、2位还是更多)
  • 默认情况下sed会对每行进行一次匹配替换,正好符合你的需求

方案2:使用awk命令

如果想更精准地只处理第一个字段(避免行内其他位置可能出现的_i干扰),可以用awk:

awk '{sub(/_i[0-9]*$/, "", $1); print $0}' file.txt

原理说明:

  • $1表示每行的第一个字段(也就是空格前的部分)
  • sub(/_i[0-9]*$/, "", $1)把第一个字段末尾的_i加数字替换为空($确保是字段末尾的内容)
  • print $0输出处理后的整行

验证效果

拿你的示例文件测试,两种方案都会输出:

DN256845_c2_g1 len=56274 ACGGAGG
DN256532_c0_g2 len=23973 AATACTC
DN256979_c8_g3 len=16728 CGAAACT

完全符合你的期望!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 09:48:04