如何使用awk或grep筛选前8位含至少1个数字且第9位为下划线的字符串
实现方案
grep 方案
使用GNU grep的PCRE正则模式实现:
grep -P '^(?=.{0,7}[0-9]).{8}_' 你的输入文件
规则说明:
(?=.{0,7}[0-9])为正向预查逻辑,限定行首最多7个任意字符后必须出现数字,保证前8位至少包含1个数字.{8}_匹配任意8个字符后紧跟下划线,满足第9位为下划线的要求
awk 方案
无环境依赖,兼容性更强,拆分两个规则直接判断:
awk 'substr($0,9,1) == "_" && substr($0,1,8) ~ /[0-9]/' 你的输入文件
规则说明:
substr($0,9,1) == "_"校验行的第9位字符是否为下划线substr($0,1,8) ~ /[0-9]/校验行前8位字符是否包含数字- 两个条件同时满足时会默认输出整行
提示:非GNU环境(如macOS)默认没有带PCRE支持的grep,直接使用awk方案即可正常运行。
内容的提问来源于stack exchange,提问作者Greg
相关产品推荐
相关产品推荐

