Retourner aux forums || Retourner au forum Programmation.shell
Programmation.shell : Manipulation de fichier en sh
Posté par heldwin75 () le 28 juin 2006J'ai un fichier contenant plusieurs lignes de ce type:
cours nom1prenom1 password idu nom1 nom2 prenom1 prenom2
Je lis le fichier avec:
cat fichier | while true ; do
read ligne
set -- $ligne
cours=$1
...
nom1=$5; nom2=$6; prenom1=$7; prenom2=$8
Sachant que nom2 et prenom2 peuvent ne rien contenir, comment peut-on attribuer ces 4 valeurs correctement ?
Par exemple, si il n'y a que nom1 et rien après, cela prend la valeur de début de ligne et me met un 0 à la fin (ca met un truc du style: nom1 cours0).
J'ai essayé en testant si nom2, prenom1, prenom2 était vide, ainsi que si ils avaient la valeur " ", mais cela ne semble pas marcher.
Ca fait vraiment un moment que je suis là-dessus, si quelqu'un pourrait m'aiguiller je serais vraiment soulagé :) merci
> Lire le message (7 commentaires, moyenne: 1,4).
Correction
Le problème vient surtout de la commande:
nom="$nom1 $nom2 $prenom1 $prenom2"
/useradd -c "$nom" $login (je n'ai mis que l'essentiel)
et ca m'affiche: "nom1 cours0" dans la gestionnaire de compte Linux, si il n'y avait que nom1 d'entré dans le fichier.
mauvais outil
Je pense que ce serait plus simple avec une expression réulière, donc utilise plutôt gawk, python, perl ou sed.
Sinon, quand un champ est vide, li y a quoi exactement ? les deux espaces qu'il y aurait du avoir autour du champ fantôme ?
-
[^]Re: mauvais outil
Posté par heldwin75 () le 28/06/2006 à 14:22. (lien). Évalué à 1.Oui, les 2 espace autour du champ fantome, mais je n'arrive pas à trouver comment faire un test sur ce champ fantome.
Je ne pense pas que ce soit un espace normal, car il m'a créé un répertoire "cours_ 24", mais avec rm -fR cours\ 24, il ne le supprime pas.
Je vais regardé comment fonctionne gawk.
J'ai aussi essayé en partant de:
"cours";"nom1prenom1";"password";"idu";"nom1 nom2";"prenom1 prenom2"
J'arrive à mieux gérer les noms et prénoms, mais après passage de:
cat fichier | tr '"' ' ' | tr ";" " "
je reviens au même problème. Il me faudrait une étape intermédiaire pour extraire les valeurs en 2 fois... ;)-
[^]Re: mauvais outil
Posté par Calim' Héros (Jabber id, page perso, ) le 28/06/2006 à 14:53. (lien). Évalué à 2.t'as regardé du coté de cut si ca peut te servir?
-
[^]Re: mauvais outil
Posté par heldwin75 () le 30/06/2006 à 10:25. (lien). Évalué à 1.oui, j'ai essayé avec cut -d";" -f1,2,3,4,5,6 (en prenant nomcompltet en 5 et prenomcomplet en 6).
Je récupère bien les champs, mais je n'arrive pas à attribuer un des champs (comprenant plusieurs mots) à une variable (style nomcomplet=$5)
Je pense que ce doit être simple, mais je n'ai pas encore trouvé.
Avec gawk, j'ai fini par créer un script qui me générait le login et le mot de passe, mais je reviens au même problème qu'au début, à part que je m'approche un peu plus de ce que je voulais faire en commencant cette automatisation).
En tout cas, je vois qu'il me reste encore pas mal de choses à apprendre :)
-
-
[^]Re: mauvais outil
Posté par Lol Zimmerli (Jabber id, page perso, ) le 28/06/2006 à 17:13. (lien). Évalué à 2.Je ne pense pas que ce soit un espace normal, car il m'a créé un répertoire "cours_ 24", mais avec rm -fR cours\ 24, il ne le supprime pas.
Tu n'aurais pas oublié, ici en tout cas, le _ ?
rm -rf cours_\ 24--
En fait, Bernardo n'était pas muet; c'est Zorro qui était sourd.-
[^]Re: mauvais outil
Posté par heldwin75 () le 30/06/2006 à 10:16. (lien). Évalué à 1.non rien oublié dans le rm.
Sur windows, ca affiche un carré comme espace. peut-être simplement le LF (j'ai fait énormément de test, alors c'est possible que j'ai essayé de créé des comptes linux avec un fichier texte modifié sur windows...).
-
-
Revenir en haut de page || Retourner aux forums || Retourner au forum Programmation.shell



Cette discussion est archivée, il n'est plus possible de laisser des commentaires.
Note : les commentaires appartiennent à ceux qui les ont postés. Nous n'en sommes pas responsables.