Bash : supprimer caracteres repetitif debut chaine (trim ?) [Résolu/Fermé]

Signaler
-
 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

Messages postés
29583
Date d'inscription
jeudi 12 mai 2005
Statut
Modérateur
Dernière intervention
21 février 2021
7 033
(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
Messages postés
18240
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
30 novembre 2020
5 204
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 
$ 
Merci a tous les 2