I'm going to give you a thought on a way to start thinking, even though your requirements (as Ive commented) aren't 100% defined - to do this without better requirements may be wrong, but may help you see the wood for the forest
lets say you have an array of strings, that array being all the lines in your datafile
string path = @"C:\some dir\somefile.txt";
string[] allFileLines = File.ReadLines(path)
yes ?
so for column 1 you want to get matching 'lines' from allFileLines where some 'key' falls in the range A-F .. so, at a very basic level, using LINQ,
var column1Lines =
from line in allFileLines
where (some condition that matches 'line' to key 'A-F')
select line;
and therefore repeated for column2 J-R, column3 S-Z. Now, there may be many ways of optimising this, and, I could with a bit of thought return a dictionary with a string key 'column1' -> list of lines for column1, but, maybe thats simply not required/OTT
This bit
(some condition that matches 'line' to key 'A-F') really becomes crucial according to the comment I posted - it could be a Regex Match, a separate function taking 'A-F' as input and performing your match, or anything ..
.. but for us to be able to give you a solution, it really needs a better 'spec'/requirement definition on your part - once you've done that, you could use LINQ, or you could use a foreach on allFileLines with a 'classifier' function and a switch to add the 'classified line' to a list for column 1, 2 or 3