Import the data as a table, convert to a [`Association`](http://reference.wolfram.com/language/ref/Association.html) to enable fast lookups (if you have 4GB of data then I don't recommend using a [`Dataset`](http://reference.wolfram.com/language/ref/Dataset.html)
list = ImportString["A B C
0 0 0
0 0 1
0 1 0
0 1 1
1 0 0
1 0 1
1 1 0
1 1 1", "Table"];
dset =
Map[Association @@ Thread[First@list -> #] &, Rest@list]
(* {<|"A" -> 0, "B" -> 0, "C" -> 0|>, <|"A" -> 0, "B" -> 0,
"C" -> 1|>, <|"A" -> 0, "B" -> 1, "C" -> 0|>, <|"A" -> 0, "B" -> 1,
"C" -> 1|>, <|"A" -> 1, "B" -> 0, "C" -> 0|>, <|"A" -> 1, "B" -> 0,
"C" -> 1|>, <|"A" -> 1, "B" -> 1, "C" -> 0|>, <|"A" -> 1, "B" -> 1,
"C" -> 1|>} *)
Use Select to get the rows you want,
Select[dset, #A == 0 && #C == 1 &]
(* {<|"A" -> 0, "B" -> 0, "C" -> 1|>, <|"A" -> 0, "B" -> 1,
"C" -> 1|>} *)
From here, it's not too painful to get the indices from the rows,
Select[dset, #A == 0 && #C == 1 &] // (Position[dset,
Alternatives @@ #] &) // Flatten
(* {2, 4} *)