Supprimer les dernières lignes d'un fichier

Résolu/Fermé
Absolu206 Messages postés 26 Date d'inscription vendredi 20 mars 2009 Statut Membre Dernière intervention 3 juin 2009 - 20 mars 2009 à 11:22
Absolu206 Messages postés 26 Date d'inscription vendredi 20 mars 2009 Statut Membre Dernière intervention 3 juin 2009 - 20 mars 2009 à 13:55
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 jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 4 895
20 mars 2009 à 11:25
Salut,
tac fichier | sed '1,7d' | tac
;-))
2
Absolu206 Messages postés 26 Date d'inscription vendredi 20 mars 2009 Statut Membre Dernière intervention 3 juin 2009 1
20 mars 2009 à 13:42
Je ne comprends plus rien ma méthode ne fonctionne plus :(
1
Absolu206 Messages postés 26 Date d'inscription vendredi 20 mars 2009 Statut Membre Dernière intervention 3 juin 2009 1
20 mars 2009 à 11:27
Je précise que je suis sur solaris 5.8
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
20 mars 2009 à 11:30
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 vendredi 20 mars 2009 Statut Membre Dernière intervention 3 juin 2009 1
20 mars 2009 à 11:47
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 jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 4 895
20 mars 2009 à 11:48
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 vendredi 20 mars 2009 Statut Membre Dernière intervention 3 juin 2009 1
20 mars 2009 à 11:50
Et en plus, Libellé trop long : :s;1,3{N;bs};4,${N;P;D}
0
Absolu206 Messages postés 26 Date d'inscription vendredi 20 mars 2009 Statut Membre Dernière intervention 3 juin 2009 1
20 mars 2009 à 11:51
sed : commande incohérente : 7,${N;P;D}.
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
20 mars 2009 à 11:57
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 vendredi 20 mars 2009 Statut Membre Dernière intervention 3 juin 2009 1
20 mars 2009 à 12:10
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 jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 4 895
20 mars 2009 à 13:22
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 vendredi 20 mars 2009 Statut Membre Dernière intervention 3 juin 2009 1
20 mars 2009 à 13:28
ç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 jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 4 895
20 mars 2009 à 13:30
Ben voilà ;-))
0
Absolu206 Messages postés 26 Date d'inscription vendredi 20 mars 2009 Statut Membre Dernière intervention 3 juin 2009 1
20 mars 2009 à 13:55
Bon ben cette fois si c'est bon la méthode fonctionne bien
0