Les Allergies
Alimentaires
Posez votre question Signaler

Sed sur le nième caractère [Résolu]

Errendir - Dernière réponse le 23 nov. 2011 à 17:50
Bonjour à tous,
j'ai une question avec sed.
J'ai besoin de remplacer le 19ème caractère d'un certaine ligne.
Est-ce possible avec sed ?
Plus généralement, peut-on remplacer le bloc compris entre le 18ème et le 25ème caractère (par exemple)
après avoir passé un bon bout de temps sur le forum, je n'ai pas trouvé la réponse.
je bosse avec Linux RedHat 5.4.
I need you please !!!
Lire la suite 

Sed sur le nième caractère »

5 réponses
Réponse
+0
moins plus
Salut,

$ cat brol 
abcdefghijklmnopqrstuvwxyz
abcdefghijklmnopqrstuvwxyz
abcdefghijklmnopqrstuvwxyz
abcdefghijklmnopqrstuvwxyz
abcdefghijklmnopqrstuvwxyz

$ sed -r '3 s/(.{18}).(.*)/\1 X \2/' brol 
abcdefghijklmnopqrstuvwxyz
abcdefghijklmnopqrstuvwxyz
abcdefghijklmnopqr X tuvwxyz
abcdefghijklmnopqrstuvwxyz
abcdefghijklmnopqrstuvwxyz

$ sed -r '4 s/(.{18}).{7}(.*)/\1 XXXXXX \2/' brol 
abcdefghijklmnopqrstuvwxyz
abcdefghijklmnopqrstuvwxyz
abcdefghijklmnopqrstuvwxyz
abcdefghijklmnopqr XXXXXX z
abcdefghijklmnopqrstuvwxyz

$ 
Ajouter un commentaire
Réponse
+0
moins plus
merci beaucoup !!
à force de tester, je me rapprochais mais je n'aurais jamais trouvé.

Par contre, qu'y a-t-il en plus dans le paramètre r ?
zipe31- 23 nov. 2011 à 17:35
Ça évite de protéger les caractères (accolades et parenthèses) dans la regex, et aère un peu le tout ;-))
Voilà ce que ça donne sans :

sed  '4 s/\(.\{18\}\).\{7\}\(.*\)/\1 XXXXXX \2/' brol 
Ajouter un commentaire
Réponse
+0
moins plus
Encore merci !

mais pourquoi aucun exemple n'est écrit avec -r .....
C'est quand même hachement plus lisible !
zipe31- 23 nov. 2011 à 17:50
Peut être pour cause de portabilité, et d'autre part, si tu as des parenthèses, accolades ou autres caractères issus des regex étendues dans ton motif, tu devras les protéger pour qu'ils soient interprétés comme tel.
Ajouter un commentaire
Ce document intitulé « Sed sur le nième caractère » issu de CommentCaMarche (www.commentcamarche.net) est mis à disposition sous les termes de la licence Creative Commons. Vous pouvez copier, modifier des copies de cette page, dans les conditions fixées par la licence, tant que cette note apparaît clairement.
Dossier à la une
Passage au tout numérique : quel coût pour les particuliers ?