Extraire texte à gauche ou à droite de

Résolu/Fermé
padowan Messages postés 21 Date d'inscription lundi 14 janvier 2008 Statut Membre Dernière intervention 21 février 2008 - 21 févr. 2008 à 11:30
jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 - 21 févr. 2008 à 13:07
Bonjour,

J'ai un fichier avec le texte suivant dedans.

gauche;droite

Je voudrai récupérer d'abord le texte à gauche puis le texte à droite. Je sais c'est en théorie facile mais je n'y arrive pas. J'arrive à récupérer le texte entre deux lettre avec sed. J'ai vu que l'on pouvais faire ce que je veux mais personne n'arrive à l'expliquer.


Merci d'avance à vous
;)

6 réponses

padowan Messages postés 21 Date d'inscription lundi 14 janvier 2008 Statut Membre Dernière intervention 21 février 2008 3
21 févr. 2008 à 11:47
Merci beaucoup,

Au passage jicipy, donnerai tu des cours de shell ou aurait tu des lien super pour apprendre le shell. J'ai bien trouvé des sites très inintéressants mais il m'en faudrait un vraiment complet.

Merci encor
3
Utilisateur anonyme
21 févr. 2008 à 12:48
Bonjour,

très intéressant tout çà

est il possible d'avoir quelques explications concernant les caractères % et # dans :

[tmpfs]$ echo ${a%;*}
gauche

[tmpfs]$ echo ${a#*;}
droite

le % correspond au premier paramètre ou au paramètre le plus à gauche ou autre chose
de même pour le #

en fait, je vois ce que cela fait mais j'aimerais avoir la signification exacte

merci d'avance

++
Poulpoul
1
jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 4 895
21 févr. 2008 à 13:07
Salut,

man bash pour plus de détails et notamment avec cette commande :
man bash -P 'less -p "^   Remplacement des paramètres"'
Extraits choisis :
       ${paramètre#mot}
       ${paramètre##mot}
              Le  mot est développé pour fournir un motif, comme dans l'expan-
              sion des noms de fichiers. Si le motif correspond au début de la
              valeur  du  paramètre, alors le développement prend la valeur du
              paramètre après suppression du  plus  petit  motif  commun  (cas
              ``#''), ou du plus long motif (cas ``##'').  Si le paramètre est
              @ ou *, l'opération de suppression  de  motif  est  appliquée  à
              chaque paramètre positionnel successivement, et le développement
              donne la liste finale.  Si le paramètre est une variable tableau
              indexée  par  @  ou  *,  l'opération de suppression de motif est
              appliquée à chaque  membre  du  tableau  successivement,  et  le
              développement donne la liste finale.

       ${paramètre%mot}
       ${paramètre%%mot}
              est  développé pour fournir un motif, comme dans l'expansion des
              noms de fichiers. Si le motif correspond à une portion finale de
              la  valeur  du paramètre, alors le développement prend la valeur
              du paramètre après suppression du plus petit motif  commun  (cas
              ``%''), ou du plus long motif (cas ``%%'').  Si le paramètre est
              @ ou *, l'opération de suppression  de  motif  est  appliquée  à
              chaque paramètre positionnel successivement, et le développement
              donne la liste finale.  Si le paramètre est une variable tableau
              indexée  par  @  ou  *,  l'opération de suppression de motif est
              appliquée à chaque  membre  du  tableau  successivement,  et  le
              développement donne la liste finale.

       ${paramètre/motif/chaîne}
       ${paramètre//motif/chaîne}
              Le  motif  est  développé  comme  dans le traitement des noms de
              fichiers.  Le paramètre est développé et la plus longue  portion
              correspondant  au  motif  est remplacée par la chaîneg.  Dans la
              première forme, seule la première correspondance est  remplacée,
              dans  la seconde toutes les portions correspondant au motif sont
              remplacées par la chaîne.  Si le motif commence par #,  il  doit
              correspondre  au début de la valeur développée du paramètre.  Si
              le motif commence par %,  il  doit  correspondre  à  la  fin  du
              développement  du  paramètre.   Si la chaîne est nulle, les por-
              tions correspondant au motif sont supprimées et le  /  après  le
              motif  peut  être omis.  Si le paramètre est @ ou *, l'opération
              de substitution est appliquée à chacun des paramètres  position-
              nels  successivement, et le résultat est la liste finale.  Si le
              paramètre  est  une  variable  tableau  indexée  par  @  ou   *,
              l'opération  de  substitution  s'applique  à  chaque  membre  du
              tableau successivement, et le résultat est la liste finale.
;-))
0
jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 4 895
21 févr. 2008 à 11:42
Salut,

Les solutions ne manquent pas :
[tmpfs]$ a="gauche;droite"

[tmpfs]$ echo ${a}| cut -d";" -f1
gauche

[tmpfs]$ echo ${a}| cut -d";" -f2
droite

[tmpfs]$ echo ${a/;*/}
gauche

[tmpfs]$ echo ${a/*;/}
droite

[tmpfs]$ echo ${a}| sed 's/.*;//'
droite

[tmpfs]$ echo ${a}| sed 's/;.*//'
gauche

[tmpfs]$ echo ${a%;*}
gauche

[tmpfs]$ echo ${a#*;}
droite

[tmpfs]$ echo ${a}| awk -F";" '{ print $1 }'
gauche

[tmpfs]$ echo ${a}| awk -F";" '{ print $2 }'
droite
;-))
0
yvesetdiana Messages postés 62 Date d'inscription mardi 19 février 2008 Statut Membre Dernière intervention 2 avril 2008 5
21 févr. 2008 à 11:45
bonjour padowan

je ne sais pas bien si j'a compris ce que tu voulais dire...
tu veux recuperer des morceaux de textes sans tout selectionner??? si c'est ca, il faut appuyer sur ctrl en meme temps que tu selectionne les textes que tu veux ensuite cliquer droit selectionner "copier" et ut le colle ou tu veux par la suite.

si je n'ai pas repondue a ta question essaye d'etre un peu plus precis.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 4 895
21 févr. 2008 à 11:57
Donner des cours ?
Étant moi-même encore en pleine phase d'apprentissage, ça me serait difficile, mais la meilleure des écoles, selon moi, c'est les forums. On apprend autant si ce n'est plus en aidant ou en essayant d'aider...

Sinon côté liens :
Guide avancé d'écriture des scripts Bash
Introduction à la programmation en Bash
Introduction au Système UNIX - Pourquoi utiliser bash ?
Guide Bash du Débutant
SHELLdorado

;-))
0
padowan Messages postés 21 Date d'inscription lundi 14 janvier 2008 Statut Membre Dernière intervention 21 février 2008 3
21 févr. 2008 à 12:21
Merci pour ces bons liens

A bientôt (surement)
0