任务:返回 z 列中包含从 x 到 y 范围内的数字的行。
例如,在第 2 列中选择编号在 140-160 范围内的行。
1 1 some data 150
2 150 some data 1
3 151 some data 151
4 1000 some data 150
应该返回:
2 150 some data 1
3 151 some data 151
开放使用 grep、awk 或 sed。 Unix 新手。谢谢你!
答案1
awk
你可以这样做
awk '$2 > 140 && $2 < 160' input_file
它将比较第二个字段 ( $2
) 与您想要的范围,并且仅在满足这两个条件时才打印行。
如果您的最小值和最大值存储在变量中,您可以将它们传递给 in ,-v
如下awk
所示:
min=140
max=160
awk -v lower="$min" -v upper="$max" '$2 > lower && $2 < upper' input_file
答案2
grep -E -e "^[0-9]+ 1[45][0-9]" -e "^[0-9]+ 160"