Remplacer 1er mot d'une ligne avec sed
Résolu
Jules75
-
Jules75 -
Jules75 -
Bonjour,
je cherche a remplacer le premier mot d'une ligne specifique d'une serie de fichiers, sans connaitre ce mot puisqu'il change d'un fichier a l'autre.
Je debute avec sed et ej n'ai pas encore reussi a trouver comment faire, malgre mon acharnement...
Pour changer le premier mot de la ligne 42 de tous les fichiers *.txt par le mot "nouvomo", sachant que le premier mot commence au tout debut de la ligne et est suivi immediatement par une tabulation, j'ai essaye sans succes:
sed -i '42s/^\t/nouvomo/' *.txt
Ou est l'erreur ? Et comment generaliser cette manipulation pour remplacer par exemple non pas le premier mais le second mot de la ligne, et si les mots sont separes entre eux soit par des espaces soit par des tabulations ? J'espere ne pas en demander trop !
Un grand merci d'avance !
Jules
je cherche a remplacer le premier mot d'une ligne specifique d'une serie de fichiers, sans connaitre ce mot puisqu'il change d'un fichier a l'autre.
Je debute avec sed et ej n'ai pas encore reussi a trouver comment faire, malgre mon acharnement...
Pour changer le premier mot de la ligne 42 de tous les fichiers *.txt par le mot "nouvomo", sachant que le premier mot commence au tout debut de la ligne et est suivi immediatement par une tabulation, j'ai essaye sans succes:
sed -i '42s/^\t/nouvomo/' *.txt
Ou est l'erreur ? Et comment generaliser cette manipulation pour remplacer par exemple non pas le premier mais le second mot de la ligne, et si les mots sont separes entre eux soit par des espaces soit par des tabulations ? J'espere ne pas en demander trop !
Un grand merci d'avance !
Jules
A voir également:
- Remplacer 1er mot d'une ligne avec sed
- Partager photos en ligne - Guide
- Trousseau mot de passe iphone - Guide
- Remplacer disque dur par ssd - Guide
- Remplacer mot word - Guide
- Mot de passe - Guide
5 réponses
Bonjour Jules75,
sed -i '42s/[^ ]*\(.*\)/nouvomo\t\1/' *.txtla tabulation entre le ^ et ] est obtenue en console par ctrl-v ctrl-i
Merci beaucoup qqchquicommenceparQ!
Pourrais-tu juste m'expliquer la signification de \(.*\) et de \1 stp ?
Encore merci pour le coup de pouce !
Jules75
Pourrais-tu juste m'expliquer la signification de \(.*\) et de \1 stp ?
Encore merci pour le coup de pouce !
Jules75
les parenthèses protégées (parce qu'on n'utilise pas l'option -r) permettent de "mémoriser" leur contenu (tu peux en utiliser jusqu'à neuf), et le \1 rappelle le contenu des premières parenthèses.
Ici, on "mémorise" ce qui suit la tabulation jusqu'à la fin de la ligne.
Ici, on "mémorise" ce qui suit la tabulation jusqu'à la fin de la ligne.
Salut,
Une autre façon de faire :
Voir dans la FAQ : sed
;-))
Une autre façon de faire :
[tmpfs]$ cat plop blabla blibli bloblo blublu blabla blibli bloblo blublu blabla blibli bloblo blublu blabla blibli bloblo blublu blabla blibli bloblo blublu blabla blibli bloblo blublu blabla blibli bloblo blublu [tmpfs]$ sed '3 s/[^\t]*/AAAAAA/' plop # 1ère occurrence ligne 3 blabla blibli bloblo blublu blabla blibli bloblo blublu AAAAAA blibli bloblo blublu blabla blibli bloblo blublu blabla blibli bloblo blublu blabla blibli bloblo blublu blabla blibli bloblo blublu [tmpfs]$ sed '3 s/[^\t]*/AAAAAA/3' plop # 3ème occurrence ligne 3 blabla blibli bloblo blublu blabla blibli bloblo blublu blabla blibli AAAAAA blublu blabla blibli bloblo blublu blabla blibli bloblo blublu blabla blibli bloblo blublu blabla blibli bloblo blublu [tmpfs]$
Voir dans la FAQ : sed
;-))
Et pour pouvoir remplacer la dernière occurrence (qui elle n'est pas suivie d'une tabulation) :
;-))
[tmpfs]$ sed '5 s/\([^\t]\|$\)*/AAAAAA/4' plop blabla blibli bloblo blublu blabla blibli bloblo blublu blabla blibli bloblo blublu blabla blibli bloblo blublu blabla blibli bloblo AAAAAA blabla blibli bloblo blublu blabla blibli bloblo blublu
;-))
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question