Cmt effacer les 3 DERNIERES ligne d'1 fichier

Résolu/Fermé
DevilSpike Messages postés 13 Date d'inscription mardi 9 octobre 2007 Statut Membre Dernière intervention 19 mars 2009 - 17 avril 2008 à 18:01
DevilSpike Messages postés 13 Date d'inscription mardi 9 octobre 2007 Statut Membre Dernière intervention 19 mars 2009 - 17 avril 2008 à 18:19
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 jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 4 895
17 avril 2008 à 18:05
Salut,

Voir dans la FAQ : SED - Effacer les n dernières lignes
0
jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 4 895
17 avril 2008 à 18:08
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 mardi 9 octobre 2007 Statut Membre Dernière intervention 19 mars 2009
17 avril 2008 à 18:19
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 dimanche 13 janvier 2008 Statut Membre Dernière intervention 5 mai 2008 62
17 avril 2008 à 18:10
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