You're looking for [`Skip`][1]. This does not check for an [`EndOfFile`][2] condition, and should use something like [`BlockStream`][3] to handle aborts, but the following should work: strm = OpenRead["filename"]; (* Repeat the following until done *) Skip[strm, String, A]; AppendTo[ results, Read[strm, String]] (* String just gets the entire line. If the number of elements is constant for each row, then it can be replaced in the Read by ConstantArray[String, numels]~Join~{String}. *) Skip[strm, String, B - 2]; AppendTo[ results, Read[strm, String]] (* close the stream *) Close[ strm ]; [1]: http://reference.wolfram.com/mathematica/ref/Skip.html [2]: http://reference.wolfram.com/mathematica/ref/EndOfFile.html [3]: https://mathematica.stackexchange.com/a/1604/52