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 06/12/2011, à 14:37

Lohot

Couper une chaine de caractère

Bonjour,

Je voudrais couper la chaine de caractère suivante au symbole | :

chaine="bonjour au revoir|demain hier|lundi mardi mercredi"

Pour ceci, j'ai tenté plusieurs scripts

for i in `echo $chaine | tr "|" " "`; do echo $i; done
IFS=’|’
for line in $repertoire do; echo "$line"; done

Chacun des scripts pose un problème au niveau des espaces et me revoie

bonjour
au
revoir
demain
hier
lundi
mardi
mercredi

Quelqu'un aurait-il une solution ?

Merci d'avance.


Ordinateur : MSI GP60-2QE 1007XFR
Distribution : Ubuntu 18.04

Hors ligne

#2 Le 06/12/2011, à 15:58

AnsuzPeorth

Re : Couper une chaine de caractère

Bjr,

~$ echo -e "${chaine//|/\n}"
bonjour au revoir
demain hier
lundi mardi mercredi

Interface graphique pour bash, python ou autre: glade2script
Support Tchat: http://chat.jabberfr.org/muckl_int/inde … ade2script  (Hors ligne)

Hors ligne

#3 Le 06/12/2011, à 17:21

Sciensous

Re : Couper une chaine de caractère

chaine="bonjour au revoir|demain hier|lundi mardi mercredi"; echo "$chaine" | while read i; do echo "$i" | tr "|" "\n"; done

cool


antiX 19 et 21 et Ubuntu 20.04 et 22.04
( sous LXDE et gnome-shell )

Hors ligne

#4 Le 06/12/2011, à 18:52

AnsuzPeorth

Re : Couper une chaine de caractère

Sciensous a écrit :
chaine="bonjour au revoir|demain hier|lundi mardi mercredi"; echo "$chaine" | while read i; do echo "$i" | tr "|" "\n"; done

cool

euhh, pourquoi une boucle sur une variable qui ne contient qu'une ligne ?
Si tu veux vraiment traiter dans une boucle:
en sh:

echo $chaine | tr '|' '\n' | while read line; do echo $line; done

en bash:

while read line; do echo $line; done< <(echo -e "${chaine//|/\n}")

Interface graphique pour bash, python ou autre: glade2script
Support Tchat: http://chat.jabberfr.org/muckl_int/inde … ade2script  (Hors ligne)

Hors ligne

#5 Le 06/12/2011, à 19:09

Sciensous

Re : Couper une chaine de caractère

AnsuzPeorth a écrit :

euhh, pourquoi une boucle sur une variable qui ne contient qu'une ligne ?

car je ne suis pas un pro du shell, juste un amateur légèrement éclairé tongue

Si tu veux vraiment traiter dans une boucle:
en sh:

echo $chaine | tr '|' '\n' | while read line; do echo $line; done

merci pour la leçon, c'est vrai que c'est un poil plus optimisé smile

perso je reste sur le shell sh et évite la bash...


antiX 19 et 21 et Ubuntu 20.04 et 22.04
( sous LXDE et gnome-shell )

Hors ligne

#6 Le 07/12/2011, à 11:20

pingouinux

Re : Couper une chaine de caractère

Bonjour,
Autre solution :

echo -n "$chaine" | awk 'BEGIN{RS="|"}{print}'

Dernière modification par pingouinux (Le 07/12/2011, à 19:50)

Hors ligne