Pour répondre à ta 1ère question, le "break" servait à sortir de la boucle "while true" quand la variable "ligne" était vide (donc que la boucle avait lu tout le fichier). Cela peut effectivement générer un bug si ton fichier contient une ligne vide. Ton script corrigé ne sort plus du tout
Ton second bug est en effet vrai. J'y ai pas pensé (j'ai fait ce script de tête sans tester) mais effectivement, si la ligne contient plusieurs mots, ils sont réécrits un par ligne.
Ta correction est un peu foireuse parce que, si la ligne contient plusieurs mots, tu réécrits autant de fois ta ligne qu'il y a de mots à l'intérieur.
Avant de te filer une nouvelle correction, il faudrait réellement savoir
1) y a-t-il un seul mot ou plusieurs mots par ligne
2) s'il y a plusieurs mots, que faire si l'un de ces mots est "SRVS" ? Parce que s'il y a "toto SRVS titi tutu", je ne sais pas trop ce que tu veux en sortie
- soit tu veux
toto titi tutu
server1
server2
server3
- soit tu veux
toto
server1
server2
server3
titi tutu