guarda, te lo sconsiglio assolutamente di fare cosi perché l'opererazione è molto onerosa in termini di risorse e pericolosa perché più operazioni contemporaneamente portano all'autodistruzione del file

comunque, la cosa è abbastanza semplice:
1 - apri il file
2 - leggi N bytes per volta
3 - cerchi negli N bytes letti l'invio (usando ad esempio strpos) (carattere 10, carattere 13 o carattere 10 e poi 13 ... dipende dal formato del file)
4 - una volta trovato l'invio leggi N bytes per trovare l'id (o un carattere che ti permetta di conoscere la lunghezza dell'id e poi usi substr per prendere l'id)
5 - verifichi se l'identificatore sia quello che cerchi
6 - se no scrivi la riga, se si non la scrivi e ma scrivi tutto quello che rimane dall'invio successivo fion alla fine altrimenti torni al punto 2

la cosa diventa infinitamente più semplice se il file è in formato CSV o contiene campi a lunghezza fissa perché nel secondo caso bastano una serie di moltiplicazioni per sapere la posizione esatta ed il contenuto dell'identificatore della riga