Cmt effacer les 3 DERNIERES ligne d'1 fichier

Résolu
DevilSpike Messages postés 13 Date d'inscription   Statut Membre Dernière intervention   -  
DevilSpike Messages postés 13 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,

je dois écrire un script et ça allait bien jusqu'au moment où je devais effacer les 3 dernières lignes d'un fichier
Je suis sous ubuntu 7.10 et j'utilise le bash

voilà un cat mon_fichier(qui s'appelle tmp3) :

jpg
JPG
jpg
JPG
py
jpg
pgm
jpg
pdf
gif
sh
sh~
py
py~
`-- tmp3

2 directories, 17 files


je voudrais enlever les lignes que j'ai mis en gras (3 lignes en comptant le "blanc")
j'ai bien trouvé la commande
sed '$d' mon_fichier.txt

mais ça n'efface que la dernière ligne et je n'arrive pas à la modifier pour effacer les 3 dernières

Sinon, j'ai pensé aussi que je pouvais inverser l'ordre des lignes ! car à défaut d'effacer les " dernières , si je peux effacer les 3 premières!
mais je ne connait que la commande "sort" mais elle trie avant d'inverser !!
A voir également:

3 réponses

jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 896
 
Salut,

Voir dans la FAQ : SED - Effacer les n dernières lignes
0
jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 896
 
Sinon tu peux faire avec "tac" (le contraire de cat) :
 tac fichier | sed '1,3d' | tac
;-))
0
DevilSpike Messages postés 13 Date d'inscription   Statut Membre Dernière intervention  
 
génial le tac !!
merci beaucoup!
sinon, j'ai bien entendu commencer par lire les astuces et faire des recherches sur le fofo avant de poser ma question! donc la page d'intrio sur Sed a était visité moulte fois

en tout cas, merci à tous pour vos réponses !
0
R4f Messages postés 441 Date d'inscription   Statut Membre Dernière intervention   62
 
perl -e '@tout=<>;$fin = @tout>=3 ? @tout-4 : 0; print @tout[0..$fin]' monfichier.txt


J'ai fait un test avec monfichier.txt :
jpg
JPG
jpg
JPG
py
jpg
pgm
jpg
pdf
gif
sh
sh~
py
py~ 


et le résultat est :
$ perl -e '@tout=<>;$fin = @tout>=3 ? @tout-4 : 0; print @tout[0..$fin]' monfichier.txt
jpg
JPG
jpg
JPG
py
jpg
pgm
jpg
pdf
gif
sh




Raph
0