Supprimer les dernières lignes d'un fichier

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



J'ai besoin de supprimer les 7 dernières lignes d'un fichier dont je ne connais pas le nombre de lignes.
J'ai essayer de le faire avec un sed et un head mais ça ne me donne pas le résultat que je veux obtenir.

Quelqu'un a-t-il une solution?

Merci d'avance
A voir également:

12 réponses

jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 896
 
Salut,
tac fichier | sed '1,7d' | tac
;-))
2
Absolu206 Messages postés 26 Date d'inscription   Statut Membre Dernière intervention   1
 
Je ne comprends plus rien ma méthode ne fonctionne plus :(
1
Absolu206 Messages postés 26 Date d'inscription   Statut Membre Dernière intervention   1
 
Je précise que je suis sur solaris 5.8
0
jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 896
 
Et "tac" n'est pas en natif ?

Sinon, voir SED - Effacer les n dernières lignes
0
Absolu206 Messages postés 26 Date d'inscription   Statut Membre Dernière intervention   1
 
tac et seq introuvable
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 896
 
Essaye ça alors :
 sed  -n -e :s -e '1,6{N;bs}' -e '7,${N;P;D}' fichier
0
Absolu206 Messages postés 26 Date d'inscription   Statut Membre Dernière intervention   1
 
Et en plus, Libellé trop long : :s;1,3{N;bs};4,${N;P;D}
0
Absolu206 Messages postés 26 Date d'inscription   Statut Membre Dernière intervention   1
 
sed : commande incohérente : 7,${N;P;D}.
0
jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 896
 
jp@MDK:~/tmpfs ssh$ cat fichier
Ligne 1
Ligne 2
Ligne 3
Ligne 4
Ligne 5
Ligne 6
Ligne 7
Ligne 8
Ligne 9
Ligne 10
Ligne 11
Ligne 12
Ligne 13
Ligne 14
Ligne 15
Ligne 16
Ligne 17
Ligne 18
Ligne 19
Ligne 20
jp@MDK:~/tmpfs ssh$ nbrl=$(cat fichier | wc -l)
jp@MDK:~/tmpfs ssh$ sept=$(( $nbrl - 6 ))
jp@MDK:~/tmpfs ssh$ sed "${sept},${nbrl}d" fichier
Ligne 1
Ligne 2
Ligne 3
Ligne 4
Ligne 5
Ligne 6
Ligne 7
Ligne 8
Ligne 9
Ligne 10
Ligne 11
Ligne 12
Ligne 13
jp@MDK:~/tmpfs ssh$
Après je sais plus ;-))
0
Absolu206 Messages postés 26 Date d'inscription   Statut Membre Dernière intervention   1
 
Merci de ton aide mais la commande ne sed ne passe pas.
Voilà ce que j'ai : sed : commande incohérente : 32, 38d
0
jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 896
 
Si tu la tapes tel quel dans un terminal, ça donne quoi :
sed '32,38d' fichier
essaie aussi :
sed '32, 38d' fichier
0
Absolu206 Messages postés 26 Date d'inscription   Statut Membre Dernière intervention   1
 
ça me donne le bon résultat.

Sinon j'ai quelque chose qui marche:

n=`grep -c ^ fichier`
head -n `expr $n - 7` fichier
0
jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 896
 
Ben voilà ;-))
0
Absolu206 Messages postés 26 Date d'inscription   Statut Membre Dernière intervention   1
 
Bon ben cette fois si c'est bon la méthode fonctionne bien
0