awk可精准筛选100至999间纯数字行:awk '$1>=100&&$1

直接用 grep 无法做数值大小比较,它只匹配字符串模式。要精准筛选“整行都是数字”且“落在特定区间”的行(比如 100 到 999),必须结合其他工具,常用的是 awk 或 sed 配合正则与数值判断。
确认输入格式:整行纯数字
先确保每行确实只含数字(无空格、符号、前导零干扰)。例如:
12345
1024
-7
abc
007
其中 45、123 符合“纯数字+在 [100,999] 内”,而 45 太小、1024 超限、-7 和 abc 非合法正整数、007 含前导零(通常不视为标准整数表示)。
用 awk 精确判断数值区间(推荐)
awk 能自动识别并转为数字,支持逻辑比较,最可靠:
- 查 100 到 999(含)之间的整数:
awk '$1 >= 100 && $1 - 更严谨(排除前导零,如 "007" 不匹配):
awk '$1 >= 100 && $1 - 如果文件可能有空行或空白,加条件跳过:
awk 'NF && $1 >= 100 && $1
用 grep + shell 循环(适合小数据量)
不推荐但可行——先用 grep 粗筛纯数字行,再用 shell 逐行判断:
grep -E '^[0-9]+$' file.txt | while read num; do [[ $num -ge 100 && $num -le 999 ]] && echo "$num"; done- 注意:管道中的
while在子 shell 运行,变量无法回传;如需统计或后续处理,改用awk更稳妥。
避免常见错误
❌ grep '^1[0-9]\{2\}$' file.txt —— 只能匹配 100–199,漏掉 200–999。
❌ grep '^[1-9][0-9]\{2\}$' file.txt —— 匹配 100–999,但本质是字符串匹配,若文件里有 1000,它不会被误选,可算巧合正确;但换成区间 50–150 就无法用纯正则安全表达。
✅ 数值区间必须靠数值型工具(awk、perl、python)判断,正则只负责校验格式。











