#1 Le 16/10/2018, à 20:40
- goby33
création session + linux + bash
Bonjour tous le monde,
j'aurais besoin de vos lumières ...
j'ai un fichier texte que voici:
nom.prenom
hector.xxx
charles.yyyy
paul.tttt
Henri.xxx
à partir de ce fichier texte , j'aimerai crée des sessions sous Linux avec un code bash.
la session doit être noté : initialprenom.nom
si le nom existe déjà , il faut rajouter un nombre par exemple : h.xxx1 puisque (hector.xxx => h.xxx et Henri.xxx => h.xxx => h.xxx1)
tous ça en bash
pour l'instant j'ai fais ça : mais je ne sais pas si c'est bon ou si c'est la bonne méthode
cut -d: -f2 nom.txt > nom.txt
cut -c 1 nom.txt > init.txt
voila , j'espère que vous pourrez m'aider
merci d'avance
Hors ligne
#2 Le 16/10/2018, à 21:05
- cqfd93
Re : création session + linux + bash
Bonjour,
Pour qu'on puisse t'aider sans avoir le très net sentiment de juste faire tes devoirs, il faudrait d'abord que tu nous montres tout ce que tu as fait en collant ici tout ce que tu as dans ton terminal :
le contenu du fichier texte (avec la commande cat)
le résultat de chacune des commandes
tout ça donné complètement avec invites de commandes complètes
− cqfd93 −
Hors ligne
#3 Le 17/10/2018, à 05:09
- Watael
Re : création session + linux + bash
salut,
cut est une commande externe, qui peut être exécutée dans le contexte de bash, mais ce n'est pas du bash.
si tu avais testé les commandes que tu donnes, tu aurais vu que le fichier nom.txt est vide, parce que la redirection s'exécute toujours avant la commande.
Connected \o/
Welcome to sHell. · eval is evil.
Hors ligne
#4 Le 17/10/2018, à 07:29
- Hizoka
Re : création session + linux + bash
Salut une petite aide en bash
nom="Henri.xxx"
nom_seul="${nom#*.}"
echo "$nom_seul" # xxx
initiale="${nom:0:1}"
echo "$initiale" # H
initiale=${initiale,,}
echo "$initiale" # h
nouveau_nom="${initiale}.${nom_seul}"
echo "$nouveau_nom" # h.xxx
il faudrait par exemple traiter les lignes une à une avec ce système et pour savoir si le nom existe déjà, il faudrait les stocker dans un array par ex
KDE Neon 64bits
Tous mes softs (MKVExtractorQt, HizoSelect, HizoProgress, Qtesseract, Keneric, Services menus...) sont sur github
Hors ligne
#5 Le 17/10/2018, à 08:09
- goby33
Re : création session + linux + bash
Bonjour,
j'ai fais ça :
cut -d: -f2 nom.txt > nom_2.txt
cut -c 1 nom.txt > init.txt
paste -d"." init.txt nom_2.txt > m.txt
ce qui me donne :
p.nom
m.gobert
p.bleu
m.gobert
p.eee
maintenant je dois regarder si la ligne et en double si c'est le cas rajouter un chiffre
pour lire mon fichier j'ai fais ça
while read line
do
echo -e "$line"
done < m.txt
Hors ligne
#6 Le 17/10/2018, à 17:04
- Hizoka
Re : création session + linux + bash
A quoi bon cumuler des cut avec des fichiers temporaires puis une boucle ?
# Destruction de la variable si besoin
unset ListeDesNoms
# Boucle traitant le fichier ligne par ligne
while read line
do
# Nom
nom_seul="${line#*.}"
# Initiale du prénom en minuscule
initiale="${line:0:1}"
initiale=${initiale,,}
# Si ${initiale}.${nom_seul} est présent dans la liste des noms
if [[ ${ListeDesNoms[@]} = *"${initiale}.${nom_seul}"* ]]
then
# Nombre
x=1
# Tant que ${initiale}.${nom_seul}${x} existe dans la liste des noms
while [[ ${ListeDesNoms[@]} = *"${initiale}.${nom_seul}${x}"* ]]
do
# On incrémente la valeur de x
((x++))
done
# Nouveau nom
nouveau_nom="${initiale}.${nom_seul}${x}"
else
# Nouveau nom
nouveau_nom="${initiale}.${nom_seul}"
fi
# Ajout du nouveau nom à la liste
ListeDesNoms+=("${nouveau_nom}")
# Envoie du nouveau nom dans un fichier
echo "${nouveau_nom}" >> test
done < m.txt
un chouille plus simple mais plus lourd :
# Boucle traitant le fichier ligne par ligne
while read line
do
# Nom
nom_seul="${line#*.}"
# Initiale du prénom en minuscule
initiale="${line:0:1}"
initiale=${initiale,,}
# Si ${initiale}.${nom_seul} est présent dans la liste des noms
if [[ $(grep "${initiale}.${nom_seul}" test) ]]
then
# Nombre
x=1
# Tant que ${initiale}.${nom_seul}${x} existe dans la liste des noms
while [[ $(grep "${initiale}.${nom_seul}${x}" test) ]]
do
# On incrémente la valeur de x
((x++))
done
# Nouveau nom
nouveau_nom="${initiale}.${nom_seul}${x}"
else
# Nouveau nom
nouveau_nom="${initiale}.${nom_seul}"
fi
# Envoie du nouveau nom dans un fichier
echo "${nouveau_nom}" >> test
done < m.txt
KDE Neon 64bits
Tous mes softs (MKVExtractorQt, HizoSelect, HizoProgress, Qtesseract, Keneric, Services menus...) sont sur github
Hors ligne
#7 Le 17/10/2018, à 17:11
- Watael
Re : création session + linux + bash
rhô
while IFS='.' read prenom nom
KISS.
Connected \o/
Welcome to sHell. · eval is evil.
Hors ligne
#8 Le 17/10/2018, à 21:59
- Hizoka
Re : création session + linux + bash
C'est vrai que c'est plus simple
mais un chouille plus long sur les fichiers avec beaucoup de lignes
KDE Neon 64bits
Tous mes softs (MKVExtractorQt, HizoSelect, HizoProgress, Qtesseract, Keneric, Services menus...) sont sur github
Hors ligne
#9 Le 17/10/2018, à 23:32
- Watael
Re : création session + linux + bash
s'il y a beaucoup de lignes, on passe à awk.
Connected \o/
Welcome to sHell. · eval is evil.
Hors ligne
#10 Le 18/10/2018, à 17:14
- Watael
Re : création session + linux + bash
mais avant, on élimine (physiquement ? ) le plus possible de commandes externes.
Connected \o/
Welcome to sHell. · eval is evil.
Hors ligne
#11 Le 26/10/2018, à 07:17
- Compte supprimé
Re : création session + linux + bash
Bonjour,
mais avant, on élimine (physiquement ? ) le plus possible de commandes externes.
Pourquoi ne pas utiliser des commandes externes puisque on en dispose?
Pour quelle(s) raison(s) doit on 'limiter' le nombre de commandes externes?
#12 Le 26/10/2018, à 07:27
- Postmortem
Re : création session + linux + bash
Salut,
Pourquoi ne pas utiliser des commandes externes puisque on en dispose?
Pour quelle(s) raison(s) doit on 'limiter' le nombre de commandes externes?
Pour le fun de faire full-bash !
Mot' a dit : « Un Hellfest sans Slayer, c'est comme une galette-saucisse sans saucisse ! »
Hors ligne
#13 Le 26/10/2018, à 07:30
- Compte supprimé
Re : création session + linux + bash
#14 Le 26/10/2018, à 13:43
- Watael
Re : création session + linux + bash
il y a des exceptions, mais en général, les commandes externes (leur "accumulation" surtout : cut à la chaîne, ou leur mauvaise utilisation : grep sur une seule ligne... et leur répétition dans une boucle. 8O) ralentissent un script.
Connected \o/
Welcome to sHell. · eval is evil.
Hors ligne
#15 Le 28/10/2018, à 20:04
- Hizoka
Re : création session + linux + bash
goby33 => Du coup, es tu arrivé à tes fins ?
si oui, merci de le préciser dans ton titre
sinon, précise tes besoins.
KDE Neon 64bits
Tous mes softs (MKVExtractorQt, HizoSelect, HizoProgress, Qtesseract, Keneric, Services menus...) sont sur github
Hors ligne