特定の列の数値範囲を含む行を返す

特定の列の数値範囲を含む行を返す

処置:xからyまでのz列の数字を含む行を返します。

たとえば、列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

$22番目のフィールド()を目的の範囲と比較し、両方の条件が満たされている場合にのみ行を印刷します。

-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"

関連情報