Découpage chaîne de caractères
zatox
Messages postés
640
Date d'inscription
Statut
Membre
Dernière intervention
-
zatox Messages postés 640 Date d'inscription Statut Membre Dernière intervention -
zatox Messages postés 640 Date d'inscription Statut Membre Dernière intervention -
Bonjour, dans une chaine j'ai ceci:
124567-5-08-12-127-45
Je voudrais extraire tout ce qui se trouve devant le cinquième - c'est à dire obtenir
124567-5-08-12-127
Ou bien tout ce qui se trouve devant le quatrième - c'est à dire obtenir
124567-5-08-12
Merci pour votre réponse
124567-5-08-12-127-45
Je voudrais extraire tout ce qui se trouve devant le cinquième - c'est à dire obtenir
124567-5-08-12-127
Ou bien tout ce qui se trouve devant le quatrième - c'est à dire obtenir
124567-5-08-12
Merci pour votre réponse
A voir également:
- Découpage chaîne de caractères
- Caractères ascii - Guide
- Caractères spéciaux - Guide
- Chaine tnt gratuite sur mobile - Guide
- Plus de chaine tv - Guide
- Chaine radio - Télécharger - Médias et Actualité
3 réponses
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
-?
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.
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… ;-))