je pense que le while reagit de la meme facon qu'un for...
Cela veut dire que si dans ta ligne tu as un espace, il va lire la première partie avant l'espace et ensuite une 2ème fois apres l'espace ...
Donc avec des espaces, cela ne lire pas ligne par ligne ....
Là c'est le built-in read qui fait tout le travail, et read lit une ligne entière. De plus, si IFS vaut newline , for lit des lignes entières.
Citation :
je ne sais pas si la solution de pillow fonctionne, je ne connais pas la commande tr et je n'ai pas linux sous la main pour faire un man tr
tr remplace un caractère par un autre. tr a b est l'équivalent de sed 's/a/b/g'.
je pense que le while reagit de la meme facon qu'un for...
Cela veut dire que si dans ta ligne tu as un espace, il va lire la première partie avant l'espace et ensuite une 2ème fois apres l'espace ...
Donc avec des espaces, cela ne lire pas ligne par ligne ....
je ne sais pas si la solution de pillow fonctionne, je ne connais pas la commande tr et je n'ai pas linux sous la main pour faire un man tr cat /etc/passwd | cut -f5 -d ":" | tr " " .
mais sinon tu as awk qui pourrait t'etre d'un grand secours en utilisant un sed pour supprimer les espaces.
Mhh... c'est un peu de bidouillage tout ça :)
si t'arrives à récupérer le champs "NOM Prenom", tu peux faire ça pour avoir les deux:
cut -d" " -f 1 -> Le nom
cut -d" " -f 2 -> Le prenom
soit:
NOM=`cat /etc/passwd | cut -f5 -d ":" | cut -d" " -f 1`.`cat /etc/passwd | cut -f5 -d ":" | cut -d" " -f 2`
Barbare :whistle:
Ceci dis ça répond pas à ton pb, je sais pas trop comment faire :/
mr simon
Bah voila ce que je voudrais faire, dans le fichier /etc/passwd ya le Prenom et le nom de l'utilisateur séparé par un espace, et j'aimerais dans mon script avoir Prénom.nom
Alors quand je fait cat /etc/passwd | cut -f5 -d ":", je récupère bien les noms, mais il me faut encore les relier entre eux, tout les prenoms nom sont séparés par des espaces.
Alros je pensais lire le fichier ligne par ligne, ensuite utiliser cut et hop le tour est joué, mais je ne sais pas comment je pourrais faire ça.
Merci
deather2
Pourquoi veut-tu le lire ligne/ligne ?
Tu peux néanmoins essayer:
cat /etc/passwd | tacommande
mr simon
Bonjour,
dans un script j'ai besoin de lire le fichier /etc/passwd ligne par ligne,
j'ai fait :
for ligne in `cat $FILE`
mais s'il ya un espace dans un ligne, il me "coupe" la ligne en deux.