Supprimer les dernières lignes d'un fichier

Résolu
Absolu206 Messages postés 26 Statut Membre -  
Absolu206 Messages postés 26 Statut Membre -
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 41342 Statut Modérateur 4 896
 
Salut,
tac fichier | sed '1,7d' | tac
;-))
2
Absolu206 Messages postés 26 Statut Membre 1
 
Je ne comprends plus rien ma méthode ne fonctionne plus :(
1
Absolu206 Messages postés 26 Statut Membre 1
 
Je précise que je suis sur solaris 5.8
0
jipicy Messages postés 41342 Statut Modérateur 4 896
 
Et "tac" n'est pas en natif ?

Sinon, voir SED - Effacer les n dernières lignes
0
Absolu206 Messages postés 26 Statut Membre 1
 
tac et seq introuvable
0

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

Posez votre question
jipicy Messages postés 41342 Statut Modérateur 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 Statut Membre 1
 
Et en plus, Libellé trop long : :s;1,3{N;bs};4,${N;P;D}
0
Absolu206 Messages postés 26 Statut Membre 1
 
sed : commande incohérente : 7,${N;P;D}.
0
jipicy Messages postés 41342 Statut Modérateur 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 Statut Membre 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 41342 Statut Modérateur 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 Statut Membre 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 41342 Statut Modérateur 4 896
 
Ben voilà ;-))
0
Absolu206 Messages postés 26 Statut Membre 1
 
Bon ben cette fois si c'est bon la méthode fonctionne bien
0