Sed

Résolu
guillaume0811 Messages postés 95 Statut Membre -  
guillaume0811 Messages postés 95 Statut Membre -
Bonjour,

Je débute en sed et je cherche à modifier la totalité d'une ligne commencant par > :

>XXXXXXXX
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
>YYYYYYYYY
bbbbbbbbbbbbbbbbbbbbbbbbbb
bbbbbbbbbbbbbbbbbbbbbbbbbb
>ZZZZZZZZZ
ccccccccccccccccccccccccccccc
ccccccccccccccccccccccccccccc

pour donner :

>XXXXXXX
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
tttttttttttttttt
bbbbbbbbbbbbbbbbbbbbbbbbbb
bbbbbbbbbbbbbbbbbbbbbbbbbb
tttttttttttttttt
cccccccccccccccccccccccccccccc
cccccccccccccccccccccccccccccc

Je bloque pour modifier la ligne en entier...

2 réponses

zipe31 Messages postés 38797 Statut Contributeur 6 433
 
Bonjour,

S'il vous plaît
Merci
Au revoir
etc.
Sont monnaie courante quand on veut obtenir quelque chose !

Saine lecture...*
A voir aussi

Merci de votre compréhension.

De plus j'ai rien compris à ton histoire ;-((

Modifier une ligne qui commence par ">" par quoi ? Des "ttt" ? Combien ?
Pourquoi la 1ère ligne n'est pas prise en compte ?

;-)

* Bonus
0
guillaume0811 Messages postés 95 Statut Membre 3
 
Bonjour,

Excusez moi, je vais recommencer ;-)

Voila un exemple de fichier que je dispose :

>sp|Q197F8|002R_IIV3
MASNTVSAQGGSNRPVRDFSNIQDVAQFLLFDPIWNEQPGSIVPWKMNREQALAE
>sp|Q197F7|003L_IIV3
MYQAINPCPQSWYGSPQLEREIVCKMSGAPHYPNYYPVHPNALGGAWFDTSLNARS
>sp|Q197F5|005L_IIV3
MRYTVLIALQGALLLLLLIDDGQGQSPYPYPGMPCNSSRQCGLGTCVHSRCAHCSS


Je souhaiterais modifier les lignes commencants par un ">" par une autre chaine de caractère, on va dire "MCMCMC" à l'exeption de la première ligne.

donc ca donnerait:

>sp|Q197F8|002R_IIV3
MASNTVSAQGGSNRPVRDFSNIQDVAQFLLFDPIWNEQPGSIVPWKMNREQALAE
MCMCMC
MYQAINPCPQSWYGSPQLEREIVCKMSGAPHYPNYYPVHPNALGGAWFDTSLNARS
MCMCMC
MRYTVLIALQGALLLLLLIDDGQGQSPYPYPGMPCNSSRQCGLGTCVHSRCAHCSS


J'ai tenté ceci : sed -e '2,$ s/^>/MCMCMC/g'
mais ceci ne modifie pas la ligne en entier, seulement le ">"

J'espère m'être mieux fait comprendre.

Merci
0
zipe31 Messages postés 38797 Statut Contributeur 6 433
 
sed -e '2,$ s/^>.*/MCMCMC/'

;-))
0
guillaume0811 Messages postés 95 Statut Membre 3
 
Haaa merci beaucoup, ça fait quelques temps que je cherchais cette formule magique :D
Le " .* " signifie quoi exactement ? simplement jusqu'au bout de la ligne?
0
zipe31 Messages postés 38797 Statut Contributeur 6 433
 
Oui. En fait il englobe tout ce qui suit.
0
guillaume0811 Messages postés 95 Statut Membre 3
 
Merci beaucoup
Encore désolé pour tantôt
a+ ;-)
0
lami20j Messages postés 21644 Statut Modérateur, Contributeur sécurité 3 570
 
Salut,

.* - c'est une très grand histoire qui peu provoquer beaucoup des choses bonnes et/ou mauvaise

. (le point) - c'est une classe de caractère qui peut reconnaître n'importe quel caractère
* (l'étoile) - c'est un quantification qui s'applique au métacaractère précèdent avec la possibilité de reconnaître zéro fois, une fois où n'importe combien des fois le moteur de regex peuvent.
En général sans autre traitement cet motif .* est gourmand et il avale tout jusqu'à la fin de la chaîne.
On peut le stopper d'avaler tout, en l'ancrant au début, à la fin ou au début et à la fin

Sed n'est qu'un outil qui utilise les regex à sa façon. Toutefois si le domaine des regex t'intéresse, en plus de sed qui reste un outil, très puissant mais un outil, tu dois te pencher plutôt sur le petit mini langage des regex.
Ca te permettra de les utiliser avec n'importe quel outil.
Depuis quand j'ai lui le livre https://docstore.mik.ua/orelly/perl4/mre/index.htm à chaque utilisation de PC j'ai tapé au moins une regex.
0