Découpage chaîne de caractères
Fermé
zatox
Messages postés
640
Date d'inscription
samedi 17 février 2007
Statut
Membre
Dernière intervention
26 juin 2020
-
17 févr. 2018 à 15:10
zatox Messages postés 640 Date d'inscription samedi 17 février 2007 Statut Membre Dernière intervention 26 juin 2020 - 18 févr. 2018 à 13:34
zatox Messages postés 640 Date d'inscription samedi 17 février 2007 Statut Membre Dernière intervention 26 juin 2020 - 18 févr. 2018 à 13:34
A voir également:
- Découpage chaîne de caractères
- Caractères ascii - Guide
- Caractères spéciaux clavier azerty - Guide
- Chaine tnt gratuite sur mobile - Guide
- Caractères spéciaux - Guide
- Plus de chaine tv - Guide
3 réponses
Utilisateur anonyme
17 févr. 2018 à 17:19
17 févr. 2018 à 17:19
salut,
« devant le cinquième
ces nombres sont fixes, ou ou s'agit-il du dernier et de l'avant-dernier
c'est-à-dire, la chaîne est-elle susceptible de ne pas avoir toujours ce format, et comporter d'autres
« devant le cinquième
-», et « devant le quatrième
-»
ces nombres sont fixes, ou ou s'agit-il du dernier et de l'avant-dernier
-?
c'est-à-dire, la chaîne est-elle susceptible de ne pas avoir toujours ce format, et comporter d'autres
-?
zatox
Messages postés
640
Date d'inscription
samedi 17 février 2007
Statut
Membre
Dernière intervention
26 juin 2020
66
18 févr. 2018 à 10:37
18 févr. 2018 à 10:37
Bonjour, merci pour ta réponse, non la chaîne n'a pas forcément toujours le même format par exemple ça peut-être:
12-128-1-54-1258-1 ou bien
123589-12-258-254879-2-58
Bon j'ai trouvé une solution mais qui n'est pas très élégante:
En fonction de la valeur que je donne à nb_num je récupère la chaîne que je veux mais il doit y avoir mieux que ça je pense.
Merci pour votre aide.
12-128-1-54-1258-1 ou bien
123589-12-258-254879-2-58
Bon j'ai trouvé une solution mais qui n'est pas très élégante:
#! /bin/bash
nb_num=4
while read ligne
do
tableau=( ${ligne//-/ } )
if [ "$nb_num" == 5 ]
then
new_line="${tableau[0]} ${tableau[1]} ${tableau[2]} ${tableau[3]} ${tableau[4]}"
fi
if [ "$nb_num" == 4 ]
then
new_line="${tableau[0]} ${tableau[1]} ${tableau[2]} ${tableau[3]}"
fi
if [ "$nb_num" == 3 ]
then
new_line="${tableau[0]} ${tableau[1]} ${tableau[2]}"
fi
if [ "$nb_num" == 2 ]
then
new_line="${tableau[0]} ${tableau[1]}"
fi
echo $new_line >> new_fichier.txt
cpt_fichier_txt=$(($cpt_fichier_txt + 1));
done < fichier.txt
echo $new_line
En fonction de la valeur que je donne à nb_num je récupère la chaîne que je veux mais il doit y avoir mieux que ça je pense.
Merci pour votre aide.
zipe31
Messages postés
36402
Date d'inscription
dimanche 7 novembre 2010
Statut
Contributeur
Dernière intervention
27 janvier 2021
6 415
18 févr. 2018 à 11:53
18 févr. 2018 à 11:53
Salut,
On peut aussi…
Ce n'est pas parfait avec "grep", mais bon… ;-))
On peut aussi…
$ A="124567-5-08-12-127-45"
$ grep -o '\([^-]*-\)\{5\}' <<< "${A}"
124567-5-08-12-127-
$ grep -o '\([^-]*-\)\{4\}' <<< "${A}"
124567-5-08-12-
$ grep -o '\([^-]*-\)\{3\}' <<< "${A}"
124567-5-08-
$ echo "${A%-*}"
124567-5-08-12-127
$ B="$(echo ${A%-*})"
$ echo "${B%-*}"
124567-5-08-12
Ce n'est pas parfait avec "grep", mais bon… ;-))
Utilisateur anonyme
>
zipe31
Messages postés
36402
Date d'inscription
dimanche 7 novembre 2010
Statut
Contributeur
Dernière intervention
27 janvier 2021
18 févr. 2018 à 12:17
18 févr. 2018 à 12:17
B="${A%-*}"
zipe31
Messages postés
36402
Date d'inscription
dimanche 7 novembre 2010
Statut
Contributeur
Dernière intervention
27 janvier 2021
6 415
>
Utilisateur anonyme
18 févr. 2018 à 12:18
18 févr. 2018 à 12:18
Exact. Merci ;-)
zatox
Messages postés
640
Date d'inscription
samedi 17 février 2007
Statut
Membre
Dernière intervention
26 juin 2020
66
18 févr. 2018 à 13:34
18 févr. 2018 à 13:34
Ah oui merci à tous pour toutes ces solutions bien plus élégantes que la mienne.