返回包含特定列中一定范围内的数字的行

返回包含特定列中一定范围内的数字的行

任务:返回 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"

相关内容