Couper une chaine de caractere
Résolu
jukun62
Messages postés
7
Date d'inscription
Statut
Membre
Dernière intervention
-
jukun62 Messages postés 7 Date d'inscription Statut Membre Dernière intervention -
jukun62 Messages postés 7 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
je cherche a couper une chaine de caractère dans un script sh, j'ai essayé d'utiliser la commande cut mais le problème c'est que cette commande ne permet que d'utiliser des caractère comme délimiteur alors que dans mon exemple je voudrai utiliser une chaine de caractère.est-ce que quelqu'un connait une commande ou une option de cut pour résoudre mon problème?
je vous explique par un exemple:
List="machin bidule truc"
je voudrais récupérer premièrement tout ce qui se trouve avant "bidule" puis tout ce qui se trouve après "bidule".
j'avais alors essayé la commande :
av=`echo List | cut -d "bidule" -f1`
ap=`echo List | cut -d "bidule" -f2`
mais l'option -d nécessite un caractère comme délimiteur merci d'avance pour vos réponse.
je cherche a couper une chaine de caractère dans un script sh, j'ai essayé d'utiliser la commande cut mais le problème c'est que cette commande ne permet que d'utiliser des caractère comme délimiteur alors que dans mon exemple je voudrai utiliser une chaine de caractère.est-ce que quelqu'un connait une commande ou une option de cut pour résoudre mon problème?
je vous explique par un exemple:
List="machin bidule truc"
je voudrais récupérer premièrement tout ce qui se trouve avant "bidule" puis tout ce qui se trouve après "bidule".
j'avais alors essayé la commande :
av=`echo List | cut -d "bidule" -f1`
ap=`echo List | cut -d "bidule" -f2`
mais l'option -d nécessite un caractère comme délimiteur merci d'avance pour vos réponse.
A voir également:
- Couper une chaine de caractere
- Caractère ascii - Guide
- Caractère spéciaux - Guide
- Couper une video - Guide
- Caractere speciaux - Guide
- Chaine tnt gratuite sur mobile - Guide
8 réponses
Salut,
[tmpfs]$ List="machin bidule truc" [tmpfs]$ echo ${List#* } bidule truc [tmpfs]$ echo ${List% *} machin bidule [tmpfs]$ echo ${List##* } truc [tmpfs]$ echo ${List%% *} machin [tmpfs]$;-))
Il y a des centaines de façons...
en voici une si ta chaine est petite et s'il y a toujours des espaces entre les mots :
set `echo "machin bidule truc"`
Tu fais attention avant echo et à la fin ce sont des accents inversés <AltGr> 7
# echo $1
machin
# echo $2
bidule
# echo $3
truc
et dans $* tu as :
# echo $*
machin bidule truc
Enfin dans $# le nombre de mots :
# echo $#
3
en voici une si ta chaine est petite et s'il y a toujours des espaces entre les mots :
set `echo "machin bidule truc"`
Tu fais attention avant echo et à la fin ce sont des accents inversés <AltGr> 7
# echo $1
machin
# echo $2
bidule
# echo $3
truc
et dans $* tu as :
# echo $*
machin bidule truc
Enfin dans $# le nombre de mots :
# echo $#
3
merci pour les réponses mais je voudrai une méthode qui fonctionne quelque soit le nombre de mots dans la liste et quelque soit la chaine de caractère
exemple
List="un deux trois quatre cinq"
je voudrai pouvoir éxècuter cette méthode quelque soit la chaine de caractère qui sert de délimiteur.
je pourrai par exemple prendre pour délimiteur "trois" ou " deux " ou "deux trois quatre" ou "s qua" ...
j'en ai besoin pour remplacer une partie de la chaine List par une autre chaine de caractère.
je voudrai par exemple obtenir avec List les chaine "un deux truc quatre cinq" ou "un bidule cinq"...
exemple
List="un deux trois quatre cinq"
je voudrai pouvoir éxècuter cette méthode quelque soit la chaine de caractère qui sert de délimiteur.
je pourrai par exemple prendre pour délimiteur "trois" ou " deux " ou "deux trois quatre" ou "s qua" ...
j'en ai besoin pour remplacer une partie de la chaine List par une autre chaine de caractère.
je voudrai par exemple obtenir avec List les chaine "un deux truc quatre cinq" ou "un bidule cinq"...
Oui c'est pour le cas où il a sa chaine dans une variable...
# TOTO="machin bidule truc"
# set `echo $TOTO`
# echo $1
machin
A moins qu'il y ait là aussi une autre solution ....
# TOTO="machin bidule truc"
# set `echo $TOTO`
# echo $1
machin
A moins qu'il y ait là aussi une autre solution ....
ah ! ben là tu vois celle-là je l'apprends !!
çà fait 20 ans que je me tords le neurone avec mes côte inverses
MERCI
çà fait 20 ans que je me tords le neurone avec mes côte inverses
MERCI
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Oui entre temps j'ai eu une interruption...
J'ai besoin d'une bonne remise à niveau
:)))
J'ai besoin d'une bonne remise à niveau
:)))
en fait mon problème reviens a substituer une sous chaine situé a l'intérieur d'une chaine de caractère par une autre chaine de caractère sans savoir ni combien de mots il y a dans ma chaine ni la place ou je veux effectuer la substitution
exemple
List="une chaine de caractère"
je voudrai pouvoir obtenir "une chaine 2 caractère" par exemple
exemple
List="une chaine de caractère"
je voudrai pouvoir obtenir "une chaine 2 caractère" par exemple
Dommage, mais çà viendra...
J'ai vu que des neurobiologistes stockaient des informations du cerveau sur clé USB
:)
J'ai vu que des neurobiologistes stockaient des informations du cerveau sur clé USB
:)
Là je laisse la place au spécialiste,
Tu es entre bonnes mains avec jipicy
Tu es entre bonnes mains avec jipicy
en faite plus globalement mon but est d'ajouter une chaine de caractère STRING dans une liste de caractère déjà triée LIST(c'est une partie d'un projet il mets donc interdit d'utiliser une commande de tri quelconque).
exemple
LIST="bidule machin truc"
et je veux introduire le mot MOT="chaine"
"machin" est le premier mot aphabetiquement supérieur a "chaine" je doit donc l'introduire avant "machin".
je cherche a recuperer AV(ici="bidule ") et AP(ici=" truc")
pour obtenir une nouvelle Liste LIST2="$AV $MOT "machin" $AP"
pour obtenir la liste LIST2="bidule chaine machin truc"
désolé si cet exemple ne simplifie pas les choses
exemple
LIST="bidule machin truc"
et je veux introduire le mot MOT="chaine"
"machin" est le premier mot aphabetiquement supérieur a "chaine" je doit donc l'introduire avant "machin".
je cherche a recuperer AV(ici="bidule ") et AP(ici=" truc")
pour obtenir une nouvelle Liste LIST2="$AV $MOT "machin" $AP"
pour obtenir la liste LIST2="bidule chaine machin truc"
désolé si cet exemple ne simplifie pas les choses
J'avais pas VU !
Oui tel que c'est présenté çà va au delà de l'analyse syntaxique et grammaticale ...
tu peux être plus explicite jukun62
Oui tel que c'est présenté çà va au delà de l'analyse syntaxique et grammaticale ...
tu peux être plus explicite jukun62