Bash : supprimer caracteres repetitif debut chaine (trim ?)

Résolu/Fermé
mortelrdv - 28 janv. 2013 à 08:22
 mortelrdv - 29 janv. 2013 à 07:04
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.
A voir également:

3 réponses

mamiemando Messages postés 33077 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 18 avril 2024 7 748
28 janv. 2013 à 10:17
(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
dubcek Messages postés 18718 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 22 mars 2024 5 615
28 janv. 2013 à 13:04
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
Merci a tous les 2
0