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

Linux下筛选ID列第5-10位含2个及以上前导零的行

解决方案

直接用awk的正则匹配就能搞定,核心是判断ID第5-10位的子串是否以2个及以上前导零开头。

1. 输出符合条件的完整行

awk -F' *\\| *' 'substr($2, 5, 6) ~ /^0{2,}/' file.dat

2. 仅输出符合条件的ID列

awk -F' *\\| *' 'substr($2, 5, 6) ~ /^0{2,}/ {print $2}' file.dat

命令解释

  • -F' *\\| *':设置字段分隔符为带前后空格的管道,分割后$2就是纯ID(不会带原行里管道两侧的空格),保证substr取字符的位置准确
  • substr($2, 5, 6):从ID的第5个字符开始,截取6个字符,正好对应你要的第5至第10位
  • ~ /^0{2,}/:正则匹配判断——^表示子串的开头,0{2,}表示连续2个或更多的0,满足这个条件的行就会被输出

针对你的示例输入测试

输入:

1 | 156700923134 | hkohin | 23
4 | 777754635373 | hhkdys | 45
3 | 678387700263 | ieysff | 09

用第一个命令会输出:

1 | 156700923134 | hkohin | 23

第二个命令会输出:

156700923134

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 07:55:17