Um simples script Python provavelmente será mais rápido do que qualquer coisa que você possa fazer no bash. Por exemplo:
#!/usr/bin/python
with open("data") as data:
with open("filtered", "w") as filtered:
for row in data:
values = row.split()
if (int(values[1]) == 1) and (float(values[5]) >= 53.275): # [1]
filtered.write(row)
[1]: A indexação é baseada em zero em python, então values[1]
e values[5]
são a segunda e a sexta colunas, respectivamente.
É impossível testar corretamente sem saber exatamente como são seus dados e o quanto deles corresponde ao seu filtro, mas, para alguns arquivos de amostra rapidamente eliminados, obtenho estes resultados:
data_1 1000000 rows 35 matching rows 1.5 seconds
data_2 1000000 rows 565722 matching rows 3.1 seconds