只获取其值在bash范围内的行

时间:2018-02-15 15:26:00

标签: bash text awk sed sh

伙计我有一个带有此方案的文本文件(只有原始20k行的几行):

Skeet: 120  Mark: 3636  Tatos: 502
Skeet: 190  Mark: 764  Tatos: 468  
Skeet: 210  Mark: 2106  Tatos: 302
Skeet: 305  Mark: 510  Tatos: 1900     

我想要做的只是打印价值为" Skeet"从150到240.请记住,行数超过10k,因此需要将其插入循环以确保它读取每一行。 Desidered输出:

Skeet: 190  Mark: 764  Tatos: 468  
Skeet: 210  Mark: 2106  Tatos: 302

2 个答案:

答案 0 :(得分:4)

根据OP,如果你想在变量中有shell变量和比较值,那么下面的内容可以帮助你:

var="Skeet:" ##Shell variable
awk -v val="$var" -v start=150 -v end=240 '$1==val && ($2>=start && $2<=end)'  Input_file

答案 1 :(得分:1)

awk '{if ($2 >= 150 && $2 <= 240) print}' file.txt

要通过bash变量设置限制,你可以做一些与@ RavinderSingh13指出的类似的事情:

awk -v start=$foo -v end=$oof '{if ($2 >= start && $2 <= end) print}' file.txt