Script shell

pounz Messages postés 14 Date d'inscription   Statut Membre -  
dubcek Messages postés 18627 Date d'inscription   Statut Contributeur Dernière intervention   -
Bonjour,
voici mon problème j'ai une variable dans laquelle j'ai:
exemple:
$toto="tagada tsointsoin"
je voudrais couper "tagada " et garder juste le tsointsoin pour l'afficher sur la sortie standard.
Le problème c'est que je ne vois pas du tout comment faire donc si quelqu'un peux m'indiquer comment faire mici :).
Configuration: Windows 7
Firefox 3.5.7

13 réponses

  1. jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 898
     
    ;-))

    man bash (Remplacement des paramètres) :

    ${#paramètre}
        Est remplacé par la longueur, en caractères, de la valeur du paramètre. Si le paramètre est * ou @, la valeur est le nombre de paramètres positionnels. Si le paramètre est un nom de tableau indexé par * ou @, la valeur est le nombre d'éléments dans le tableau. 
        ${paramètre#mot} 
    ${paramètre##mot}
        Le mot est développé pour fournir un motif, comme dans l'expansion 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 portions 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 positionnels 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. 
    2
  2. jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 898
     
    [tmpfs]$ cat plop
    toto tata
    yoyo titi
    popo papa
    tagada tsointsoin
    
    [tmpfs]$ awk '$1 ~ /.*o.*/ { print $2 }' plop
    tata
    titi
    papa
    
    [tmpfs]$

    ;-))
    1
  3. pounz Messages postés 14 Date d'inscription   Statut Membre
     
    je vais détailler un peu plus c'est vrai que c'est flou ce que je dis

    en gros je voudrais ça

    $toto="tagada tsointsoin"
    couper "tagada " de $toto stocker "tsointsoin" dans $tata par exemple et ensuite
    echo $tata m'affiche "tsointsoin"

    sachant que "tagada" est dans $stock

    j'essai avec cut mais je sais pas ça me met des erreurs dans tout les sens u_u

    si quelqu'un peu m'aider mici
    0
  4. dubcek Messages postés 18627 Date d'inscription   Statut Contributeur Dernière intervention   5 660
     
    hello
    en shell, il n'y a pas de $ devant la variable quand on l'assigne

    $ toto="tagada tsointsoin"
    $ 
    $ echo $toto|cut -d " " -f 2
    tsointsoin
    $ 
    $ tata=$(echo $toto|cut -d " " -f 2)
    $ echo $tata
    tsointsoin
    $ 
    $ 
    
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. pounz Messages postés 14 Date d'inscription   Statut Membre
     
    a ba j'ai fait ça avec un cut et un grep enfin les deux fonctionne merci :).

    parcontre en imaginant que j'ai
    "tagada tsointsoin
    pouet tsointsoin
    omg tsointsoin"
    exemple bidon mais je me pose la question comme ça
    comment je peux faire pour afficher sur la sortie via ce que je demandais précedement

    "tagada
    pouet
    omg"
    et non pas
    "tagada pouet omg"
    si quelqu'un sait mici
    0
  7. jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 898
     
    Salut,

    jp@MDK:~/tmpfs ssh$ echo ${var}
    tagada tsointsoin
    
    jp@MDK:~/tmpfs ssh$ echo ${var% *}
    tagada
    
    jp@MDK:~/tmpfs ssh$ echo ${var#* }
    tsointsoin
    
    jp@MDK:~/tmpfs ssh$

    ;-))
    0
  8. pounz Messages postés 14 Date d'inscription   Statut Membre
     
    merci jipicy mais j'ai rien compris :p
    0
  9. pounz Messages postés 14 Date d'inscription   Statut Membre
     
    a ba j'ai trouver avec tr -s ' ' '\n' c'était tout bete en faite mici
    0
  10. pounz Messages postés 14 Date d'inscription   Statut Membre
     
    mici
    0
  11. pounz Messages postés 14 Date d'inscription   Statut Membre
     
    merci de l'aide maintenant j'ai un nouveau problème car je n'arrive a rien la je vais détailler ce sera plus simple

    j'ai un dossier 'file' dedans j'ai
    toto tata
    yoyo titi
    popo papa
    tagada tsointsoin

    je veux afficher sur le sortir standard tata titi papa juste en faisant une recherche sur 'o'

    en gros je fais
    cut -d " " -f1 file | grep o
    ça me donne
    toto
    yoyo
    popo

    mais ce que je veux obtenir est
    tata
    titi
    papa

    voila donc si quelqu'un peu m'aider merci :).
    0
  12. pounz Messages postés 14 Date d'inscription   Statut Membre
     
    merci beaucoup
    0
  13. pounz Messages postés 14 Date d'inscription   Statut Membre
     
    hmm et sans utiliser awk car il ce trouve que je n'ai pas le droit de l'utiliser ( et ba oui c'est pour un proj :p )
    awk d'après le man ça fait un peu trop le café dommage
    0
  14. dubcek Messages postés 18627 Date d'inscription   Statut Contributeur Dernière intervention   5 660
     
    sans awk
    $ cat a1
    toto tata
    yoyo titi
    popo papa
    tagada tsointsoin
    $ 
    $ cut -d " " -f 1 a1 | grep o|xargs -i grep {} a1|cut -d " " -f 2
    tata
    titi
    papa
    $ 
    0