Bash : supprimer caracteres repetitif debut chaine (trim ?)

Résolu
mortelrdv -  
 mortelrdv -
Bonjour,

je sais comment faire pour supprimer UN caractere qui se repete en debut de chaine, genre
sed 's/^a*//'


mais comment faire s'il y a plusieurs caracteres, genre
abababaefgthhyyyyyyj45645 --->aefgthhyyyyyyj45645    #on a enleve 'ab'
a12a12codird  --->codird        #on a enleve 'a12'
aaaaaaasortiraaaaa ---> asortiraaaaa         #on a enleve 'aa'

je voudrais faire un script
suppstr "chaine" "caract a enlever"


merci de vos conseils
PS : je suis sous solaris, je n'aurais que des commandes de base sommaire.

3 réponses

  1. mamiemando Messages postés 33228 Date d'inscription   Statut Modérateur Dernière intervention   7 944
     
    (mando@silk) (~) $ echo "abababaefgthhyyyyyyj45645" | sed "s/^\(ab\)*\(.*\)/\2/"
    aefgthhyyyyyyj45645


    Ceci dit il doit y avoir mieux car j'ai utilisé l'opérateur \( \) pour le motif répété là où ( ) devrait suffire, mais il reste un exemplaire du truc à éliminer si j'utilise les parenthèses normales je ne sais pas pourquoi...

    Bonne chance
    0
  2. dubcek Messages postés 18627 Date d'inscription   Statut Contributeur Dernière intervention   5 660
     
    hello
    sed Solaris ne connait pas l'option -r d'où les \ sans le -r
    $ cat a1
    abababaefgthhyyyyyyj45645
    a12a12codird 
    aaaaaaasortiraaaaa 
    $ sed 's/^\(ab\|a12\|aa\)*//' a1
    aefgthhyyyyyyj45645
    codird 
    asortiraaaaa 
    $ sed -r 's/^(ab|a12|aa)*//' a1
    aefgthhyyyyyyj45645
    codird 
    asortiraaaaa 
    $ 
    
    0