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} *)