Allora, potresti creare un array delle righe con la funzione file().
in seguito con foreach lo scorri.
Per ogni riga verifichi se inizia per species.
Se inizia per species explodi sul : e inserisci il valore [1] in un nuovo array.
Alla fine hai un array che puoi ordinare alfabeticamente con la funzione sort()
A questo punto hai l'array ordinato alfabeticamente, non hai che da scrivere riga per riga nel nuovo file di testo forecciando l'array.
Una sola perplessità. Ma con una così grande quantità di dati, non sarebbe meglio prendere in considerazione l'utilizzo di un database?![]()