Supprimer,copier dans un fichier

Fermé
larissatouko Messages postés 14 Date d'inscription mercredi 9 juin 2010 Statut Membre Dernière intervention 1 juillet 2010 - 9 juin 2010 à 13:06
larissatouko Messages postés 14 Date d'inscription mercredi 9 juin 2010 Statut Membre Dernière intervention 1 juillet 2010 - 22 juin 2010 à 12:58
Bonjour,

je suis débutante en unix(ksh) .j'ai un fichier ayant une liste de nom et prenom comme ci dessous

# commentaire
nom1 prénom1
nom2 prénom2
# commentaire
nom3 prénom3
...

j'aimerais

1) les affichées a l'ecran jai fait

sous cette forme:<nom> <prénom>

voici mon programme

#! /bin/ksh

while read line; do echo -e "$line\n";done < list ;


ca affiche a l'ecran; nom prenom .

je ne sais pas comment mettre les crochai indiquer dans la question


2) supprimer la ligne avec les commentaires

jai fait :


sed '/#/d' list

ca ne marche pas

3) j aimerais aussi créer un pseudo pour chaque nom et prénom en utilisant le 2premiere lettre du nom et les 2 dernière lettre du prénom

quelqu'un pourrais m'aider je vous serais très reconnaissant
A voir également:

1 réponse

jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 4 897
9 juin 2010 à 13:53
Salut,

je ne sais pas comment mettre les crochai indiquer dans la question
Il ne faut pas mettre les chevrons, ils ne sont là que pour signifier que le nom entre les 2 chevrons doit être remplacé par le nom approprié. C'est juste une convention d'écriture.

2) supprimer la ligne avec les commentaires

sed '/^#/d' list


3) j aimerais aussi créer un pseudo pour chaque nom et prénom en utilisant le 2premiere lettre du nom et les 2 dernière lettre du prénom

En reprenant ton exemple du 1, combiné au 2 (supprimer les commentaires) et en jouant avec le remplacement des paramètres :

while read -e nom prenom; do echo -e "${nom::2}${prenom: -2}"; done < <(sed '/^#/d' list)


;-))
1
larissatouko Messages postés 14 Date d'inscription mercredi 9 juin 2010 Statut Membre Dernière intervention 1 juillet 2010
9 juin 2010 à 15:15
merci d'avoir répondu si vite a ma question ca m'a vraiment aidé mais je voudrais afficher les différent pseudo ainsi
<nom> <prénom> <pseudo>

donc sans toute fois couper les noms et prenoms je voulais plutot les copiers

2) je voudrais aussi remplacer tous les non accentués par les accentués c'est a dire [éèàùç] -> [eeauc] J'ai fait
sed 's/e/é/g' list
mais ca remplace qu'une seule lettre comment remplacer toute les lettres a la fois?

merci d'avance
0
jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 4 897
9 juin 2010 à 15:44
Pour le 1 :

while read -e nom prenom; do echo -e "<${nom}> <${prenom}> <${nom::2}${prenom: -2}>"; done < <(sed '/^#/d' list)

Pour le 2, voir avec "sed" et la commande "y" :

sed 'y/àâéèêëîïôöùûü/aaeeeeiioouuu/' list

Ou avec la commande "tr" (man tr)...
0
larissatouko Messages postés 14 Date d'inscription mercredi 9 juin 2010 Statut Membre Dernière intervention 1 juillet 2010
9 juin 2010 à 19:11
jusqu'a l'or vous m'avez énormement aidé.toute derniere question svp;

1)apres avoir creer les pseudo je doit passer le nom du fichier en argument jai fait

monfichier= "list"

if[ -f $monfichier] then
echo fichier existant;
else
echo $monfichier non existant

esce correcte ?

2)s'il existe,je voudrais passer le nom du fichier en paramettre que faire?

3)ensuite utiliser les pseudo creer pour chaque nom et prenom et grace a la fonction useradd ajouter chacun utilisateur ou le

login=pseudo
home= /home/nom_xy
uid=1000 pour le premier compte puis on incremente
groupe=users (deja creer)
commentaire = "prenom liste ADMIN LINUX"
shell= /sbin/sh
passwd= toto (par defaut)

- comment recuperer les pseudo de chaque utilisateurs?

voici ce que jai fait

useradd -g users toto /sbin/sh -m -d ..... ensuite quoi?



merci encore
0
jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 4 897
10 juin 2010 à 08:48
Re-

Pour le 1, pas la peine de mettre le nom du fichier dans une variable, le simple fait d'appeler ton script avec le nom du fichier passer en argument (./ton_script nom_du_fichier), tu pourras tester l'existence du paramètre "$1" par la suite...

if [ -f "$1" ]; then...

Pour le 2, voir explication ci-dessus...

Après pour la suite, il serait plus simple de ne pas te compliquer la vie en mettant des chevrons ("<blablabla>") dans la récupération des noms, prénoms et pseudos dans ton fichier. Plus tu feras simple (nom:prenom:pseudo par exemple), plus il te sera facile de récupérer les valeurs par la suite pour construire ton script et créer tes utilisateurs.
Il suffit de redéfinir la variable "$IFS" (séparateur en entrée) pour récupérer chaque variable.

Mais normalement, avec la syntaxe que je t'ai donnée au #3, tu devrais pouvoir définir tes variables (nom, prénom, pseudo, home, etc.) et créer tes utilisateurs à partir de là...

Lis bien le man 'adduser' (ou useradd), toutes les fonctionnalités existe pour créer tes utilisateurs, sans même avoir besoin d'un compteur pour le numéro des groupes, c'est fait automatiquement en natif...
0
bjr la commande sed est il une commande ksh? oubien elle est en bash? parceque on nous demande de le faire en ksh particulierement javais deja tout ecrit avec la commande sed je ne sais quoi faire !!!! merci
0