Ti consiglio l'approccio con una macchina a stati finiti:
http://it.wikipedia.org/wiki/Automa_a_stati_finiti
in soldoni: mentre legge ogni riga, in che stato si trova il tuo automa (realizzato dal tuo programma)? in base allo stato in cui si trova ed in base alla riga letta deciderai cosa fare (archiviare la riga letta e/o cambiare stato). Considera anche le condizioni d'errore.