Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

sed: remplacer les dernieres lignes de fichiers par un mot...

27 réponses
Avatar
njko
Salut la liste!

Un petit message car je galère avec sed....
Je souhaiterais supprimer les 25 dernières lignes de plusieurs fichiers,
et y mettre à la place un simple mot.

D'apres ce que j'ai compris de la doc, j'ai tenté quelques commandes,
jamais bon.


sed -i -e "s/$-25/nouveaumot/g" *.php

par exemple.. me rajoute un nouveaumot à chaque ligne.

Comment dire à sed de remplacer les n dernieres lignes de différents
fichiers par un mot?
Quelqun-e aurait une piste?

Merci et bonne continuation!


Nicolas

--
Lisez la FAQ de la liste avant de poser une question :
http://wiki.debian.org/DebFrFrenchLists
Vous pouvez aussi ajouter le mot ``spam'' dans vos champs "From" et
"Reply-To:"

To UNSUBSCRIBE, email to debian-user-french-REQUEST@lists.debian.org
with a subject of "unsubscribe". Trouble? Contact listmaster@lists.debian.org

10 réponses

1 2 3
Avatar
Kevin Hinault
Le 23 décembre 2008 21:34, Jacques L'helgoualc'h <lhh+ a écrit :

Jacques L'helgoualc'h a écrit, mardi 23 décembre 2008, à 18:53 :
sed -ne '1h;2,25H;26,${H;g;P;s/^[^n]*n//;h};$aLe mot de la fin.'
.........<- un -> <--------- deux ----------> <----- trois ----->

66 caractères, contre 79 avec Perl :P



Bien joué :)

Comme on dit : [There is more than one way to do it]


Joyeux noël à tous en passant !

--
Lisez la FAQ de la liste avant de poser une question :
http://wiki.debian.org/DebFrFrenchLists
Vous pouvez aussi ajouter le mot ``spam'' dans vos champs "From" et
"Reply-To:"

To UNSUBSCRIBE, email to
with a subject of "unsubscribe". Trouble? Contact
Avatar
Arnaud Delobelle
On 23 Dec 2008, at 20:34, Jacques L'helgoualc'h wrote:

Jacques L'helgoualc'h a écrit, mardi 23 décembre 2008, à 18:53 :
[...] chercher l'émulation de tail.

Tout bêtement dans « info sed »...

Il me semble que dans les trésors de http://sed.sf.net on peut
trouver
une méthode de fenêtre glissante FIFO qui permet, appliquée ici,

- de stocker les 25 premières lignes ;

- puis écrire la première, l'effacer et ajouter la nouvelle en
queue ;

- et faire la substitution demandée, une fois avalée la dernière
ligne...



sed -ne '1h;2,25H;26,${H;g;P;s/^[^n]*n//;h};$aLe mot de la fin.'
.........<- un -> <--------- deux ----------> <----- trois ----->

66 caractères, contre 79 avec Perl :P



Personne n'a mentionné awk (pas testé):

awk '{r[i++%25]=$0;if(i>%)print r[i%25]}END{print"Le mot de la fin"}'

C'est plus long que sed mais au moins c'est lisible...
C'est moins long que perl *et* c'est lisible :)

Joyeux noël!

--
Arnaud

--
Lisez la FAQ de la liste avant de poser une question :
http://wiki.debian.org/DebFrFrenchLists
Vous pouvez aussi ajouter le mot ``spam'' dans vos champs "From" et
"Reply-To:"

To UNSUBSCRIBE, email to
with a subject of "unsubscribe". Trouble? Contact
Avatar
Mathieu JANIN
Le mercredi 24 décembre 2008, Kevin Hinault a écrit :
Le 23 décembre 2008 21:34, Jacques L'helgoualc'h <lhh+ a


écrit :
> Jacques L'helgoualc'h a écrit, mardi 23 décembre 2008, à 18:53 :
> sed -ne '1h;2,25H;26,${H;g;P;s/^[^n]*n//;h};$aLe mot de la fin.'
> .........<- un -> <--------- deux ----------> <----- trois ----->
>
> 66 caractères, contre 79 avec Perl :P

Bien joué :)

Comme on dit : [There is more than one way to do it]


Joyeux noël à tous en passant !



Ben oui, mais finalement, on est encore en dessous en faisant bêtement:

tail -n25 <fichier> && echo Le mot de la fin.

Ca ne dépasse pas 35 caractères sans compter le nom du fichier (40 si o n se
met à égalité par rapport aux autres shells en préfixant par sh -c ): il y a
peut être plus d'une manière de faire, mais autant en revenir au comman des
basiques qui ne font qu'une chose mais le font bien.

non ?

Arf.

++, MATT

--
Lisez la FAQ de la liste avant de poser une question :
http://wiki.debian.org/DebFrFrenchLists
Vous pouvez aussi ajouter le mot ``spam'' dans vos champs "From" et
"Reply-To:"

To UNSUBSCRIBE, email to
with a subject of "unsubscribe". Trouble? Contact
Avatar
Jacques L'helgoualc'h
Arnaud Delobelle a écrit, mercredi 24 décembre 2008, à 10:39 :
[...]
Personne n'a mentionné awk (pas testé):

awk '{r[i++%25]=$0;if(i>%)print r[i%25]}END{print"Le mot de la fin"}'

C'est plus long que sed mais au moins c'est lisible...



Tu as oublié le point final --- mais i>24, et ton compte est bon...

Lisible, pfff... Sed est naturellement obfusqué !

C'est moins long que perl *et* c'est lisible :)



:)

Joyeux noël!



Bonnes fêtes à tous !
--
Jacques L'helgoualc'h

--
Lisez la FAQ de la liste avant de poser une question :
http://wiki.debian.org/DebFrFrenchLists
Vous pouvez aussi ajouter le mot ``spam'' dans vos champs "From" et
"Reply-To:"

To UNSUBSCRIBE, email to
with a subject of "unsubscribe". Trouble? Contact
Avatar
Jean-Baptiste Hétier
On Wed, 24 Dec 2008 10:39:45 +0000, Arnaud Delobelle
Personne n'a mentionné awk (pas testé):

awk '{r[i++%25]=$0;if(i>%)print r[i%25]}END{print"Le mot de la fin"}'

C'est plus long que sed mais au moins c'est lisible...
C'est moins long que perl *et* c'est lisible :)



Et pourquoi pas vim tant qu'on y est :D

vim +$-25,$s/_.*/nouveaumot/g +wq test

Moi c'est ce que je trouve le plus lisible, court et naturel !

Joyeux noël!



Oui Joyeux Noël à tous, et bonne ann.. ah non, on n'a pas encore le droit
;)

--
Lisez la FAQ de la liste avant de poser une question :
http://wiki.debian.org/DebFrFrenchLists
Vous pouvez aussi ajouter le mot ``spam'' dans vos champs "From" et
"Reply-To:"

To UNSUBSCRIBE, email to
with a subject of "unsubscribe". Trouble? Contact
Avatar
Jean-Baptiste Hétier
On Wed, 24 Dec 2008 10:39:45 +0000, Arnaud Delobelle
Personne n'a mentionné awk (pas testé):

awk '{r[i++%25]=$0;if(i>%)print r[i%25]}END{print"Le mot de la fin"}'

C'est plus long que sed mais au moins c'est lisible...
C'est moins long que perl *et* c'est lisible :)



Et pourquoi pas vim tant qu'on y est :D

vim +$-25,$s/_.*/nouveaumot/g +wq test

Moi c'est ce que je trouve le plus lisible, court et naturel !

Joyeux noël!



Oui Joyeux Noël à tous, et bonne ann.. ah non, on n'a pas encore le droit
;)

--
Lisez la FAQ de la liste avant de poser une question :
http://wiki.debian.org/DebFrFrenchLists
Vous pouvez aussi ajouter le mot ``spam'' dans vos champs "From" et
"Reply-To:"

To UNSUBSCRIBE, email to
with a subject of "unsubscribe". Trouble? Contact
Avatar
Kevin Hinault
Le 24 décembre 2008 12:07, Mathieu JANIN a écrit :
Ben oui, mais finalement, on est encore en dessous en faisant bêtement:

tail -n25 <fichier> && echo Le mot de la fin.

Ca ne dépasse pas 35 caractères sans compter le nom du fichier (40 si on se
met à égalité par rapport aux autres shells en préfixant par sh - c ): il y a
peut être plus d'une manière de faire, mais autant en revenir au comm andes
basiques qui ne font qu'une chose mais le font bien.

non ?



non :)

Le but était de garder tout sauf les 25 dernières lignes pas de garder
les 25 dernières et c'est justement pour ça qu'on fait tous mumuse
depuis hier ^^

Je remarque d'ailleurs que personne n'a encore proposé de le faire avec p hp ;)

--
Lisez la FAQ de la liste avant de poser une question :
http://wiki.debian.org/DebFrFrenchLists
Vous pouvez aussi ajouter le mot ``spam'' dans vos champs "From" et
"Reply-To:"

To UNSUBSCRIBE, email to
with a subject of "unsubscribe". Trouble? Contact
Avatar
François Boisson
> Le but était de garder tout sauf les 25 dernières lignes pas de garder
les 25 dernières et c'est justement pour ça qu'on fait tous mumuse
depuis hier ^^




head -n-25 fichier && echo lemotdelafin

François Boisson


Je remarque d'ailleurs que personne n'a encore proposé de le faire avec
php ;)




Tu le veux en brainfuck :)?

--
Lisez la FAQ de la liste avant de poser une question :
http://wiki.debian.org/DebFrFrenchLists
Vous pouvez aussi ajouter le mot ``spam'' dans vos champs "From" et
"Reply-To:"

To UNSUBSCRIBE, email to
with a subject of "unsubscribe". Trouble? Contact
Avatar
Jacques L'helgoualc'h
Arnaud Delobelle a écrit, mercredi 24 décembre 2008, à 10:39 :
Personne n'a mentionné awk (pas testé):

awk '{r[i++%25]=$0;if(i>%)print r[i%25]}END{print"Le mot de la fin"}'



awk '{r[i++%26]=$0}i>25{print r[i%26]}END{print"Le mot de la fin."}'

(à la dernière impression, le tableau contient les 25 lignes oubliées et
celle qu'on imprime). Variante :

awk 'NR>25{print r[NR%25]}{r[NR%25]=$0}END{print"Le mot de la fin."}'

--
Jacques L'helgoualc'h

--
Lisez la FAQ de la liste avant de poser une question :
http://wiki.debian.org/DebFrFrenchLists
Vous pouvez aussi ajouter le mot ``spam'' dans vos champs "From" et
"Reply-To:"

To UNSUBSCRIBE, email to
with a subject of "unsubscribe". Trouble? Contact
Avatar
Philippe Merlin
Le mercredi 24 décembre 2008, François Boisson a écrit :
> Le but était de garder tout sauf les 25 dernières lignes pas de gar der
> les 25 dernières et c'est justement pour ça qu'on fait tous mumuse
> depuis hier ^^

head -n-25 fichier && echo lemotdelafin

François Boisson

> Je remarque d'ailleurs que personne n'a encore proposé de le faire av ec
> php ;)

Tu le veux en brainfuck :)?



Désolé François je n'avais pas encore vu ta solution.
Philippe

--
Lisez la FAQ de la liste avant de poser une question :
http://wiki.debian.org/DebFrFrenchLists
Vous pouvez aussi ajouter le mot ``spam'' dans vos champs "From" et
"Reply-To:"

To UNSUBSCRIBE, email to
with a subject of "unsubscribe". Trouble? Contact
1 2 3