Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 16/10/2018, à 21: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, à 22: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

En ligne

#3 Le 17/10/2018, à 06: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, à 08: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 wink


KDE Neon 64bits
Tous mes softs (MKVExtractorQt, HizoSelect, HizoProgress, Qtesseract, Keneric, Services menus...) sont sur github

Hors ligne

#5 Le 17/10/2018, à 09: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, à 18: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, à 18: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, à 22:59

Hizoka

Re : création session + linux + bash

C'est vrai que c'est plus simple smile
mais un chouille plus long sur les fichiers avec beaucoup de lignes smile


KDE Neon 64bits
Tous mes softs (MKVExtractorQt, HizoSelect, HizoProgress, Qtesseract, Keneric, Services menus...) sont sur github

Hors ligne

#9 Le 18/10/2018, à 00:32

Watael

Re : création session + linux + bash

s'il y a beaucoup de lignes, on passe à awk. smile


Connected \o/
Welcome to sHell. · eval is evil.

Hors ligne

#10 Le 18/10/2018, à 18:14

Watael

Re : création session + linux + bash

mais avant, on élimine (physiquement ? lol) le plus possible de commandes externes.


Connected \o/
Welcome to sHell. · eval is evil.

Hors ligne

#11 Le 26/10/2018, à 08:17

Compte supprimé

Re : création session + linux + bash

Bonjour,

Watael a écrit :

mais avant, on élimine (physiquement ? lol) 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, à 08:27

Postmortem

Re : création session + linux + bash

Salut,

pseudofab a écrit :

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 ! tongue


Mot' a dit : « Un Hellfest sans Slayer, c'est comme une galette-saucisse sans saucisse ! »

Hors ligne

#13 Le 26/10/2018, à 08:30

Compte supprimé

Re : création session + linux + bash

cool

#14 Le 26/10/2018, à 14: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, à 21: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