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
Configuration: Windows XP
Internet Explorer 6.0

12 réponses

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

      Sinon, voir SED - Effacer les n dernières lignes
      0
  4. Absolu206 Messages postés 26 Statut Membre 1
     
    tac et seq introuvable
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 898
     
    Essaye ça alors :
     sed  -n -e :s -e '1,6{N;bs}' -e '7,${N;P;D}' fichier
    0
  7. Absolu206 Messages postés 26 Statut Membre 1
     
    Et en plus, Libellé trop long : :s;1,3{N;bs};4,${N;P;D}
    0
  8. Absolu206 Messages postés 26 Statut Membre 1
     
    sed : commande incohérente : 7,${N;P;D}.
    0
  9. jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 898
     
    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
  10. 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
    1. jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 898
       
      Si tu la tapes tel quel dans un terminal, ça donne quoi :
      sed '32,38d' fichier
      essaie aussi :
      sed '32, 38d' fichier
      0
  11. 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
  12. jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 898
     
    Ben voilà ;-))
    0
  13. Absolu206 Messages postés 26 Statut Membre 1
     
    Bon ben cette fois si c'est bon la méthode fonctionne bien
    0