• STATISTIQUES
  • Il y a eu un total de 0 membres et 50555 visiteurs sur le site dans les dernières 24h pour un total de 50 555 personnes!
    Membres: 2 605
    Discussions: 3 579
    Messages: 32 816
    Tutoriels: 78
    Téléchargements: 38
    Sites dans l'annuaire: 58


  • ANNUAIRE
  • [FR] Zmaster
    Articles sur l'informatique, le hacking, le P2P, les divx, les astuces windows XP, les GSM, Emule, la cryptograph...
    Hacking
    [EN] Hack This Site
    Hack This Site est considéré comme un réel terrain d'entraînement légal pour le...
    Hacking
    [FR] Root-me
    Script: 5, Système: 20, Cracking: 16, Cryptanalyse: 17, Programmation: 8, Réaliste: 11, Réseau: 10, Stéganog...
    Challenges
    [EN] Sabre Films
    Site de challenge présenté sous la forme d'une quête. Vous êtes un détective et devrez résoudre d...
    Challenges
    [EN] Big-Daddy
    Big-Daddy est site internet communautaire avec un effectif diversifié, y compris des artistes, des programmeur...
    Hacking
    [EN] xda-developers
    Très bon site pour les gros bidouilleurs de smartphone de windows à androïd et de Apple jusqu'...
    Phreaking
    [EN] Gekko
    Site de challenge présenter sous la forme d'une quête. Vous êtes un agent secret qui répond sous le nom...
    Challenges

  • DONATION
  • Si vous avez trouvé ce site internet utile, nous vous invitons à nous faire un don du montant de votre choix via Paypal. Ce don servira à financer notre hébergement.

    MERCI!




Note de ce sujet :
  • Moyenne : 0 (0 vote(s))
  • 1
  • 2
  • 3
  • 4
  • 5
effacer toutes les lignes sauf les 10 dernieres sans détruire le fichier
24-10-2013, 10h33
Message : #1
gruik Hors ligne
gouteur de savon
*



Messages : 757
Sujets : 44
Points: 482
Inscription : Oct 2012
effacer toutes les lignes sauf les 10 dernieres sans détruire le fichier
j'ai hésité à poster dans les challenges de la communauté, en tous cas j'ai pas de solution pour le moment donc je suis preneur Smile

on a un fichier de log, le but donc c'est de ne garder que les 10 dernieres lignes et effacer tout le reste, le tout sans opération destructive c'est à dire que si j'avais un tail -f sur mon fichier il doit pouvoir continuer de fonctionner, aka "inplace"
Avant donc que d'écrire, apprenez à penser.
Selon que notre idée est plus ou moins obscure, l'expression la suit, ou moins nette, ou plus pure.
Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément.
(Nicolas Boileau, L'Art poétique)
+1 (0) -1 (1) Répondre
24-10-2013, 14h06
Message : #2
levur Hors ligne
Membre
*



Messages : 27
Sujets : 3
Points: 10
Inscription : Sep 2013
RE: effacer toutes les lignes sauf les 10 dernieres sans détruire le fichier
et si tu fais une redirection en boucle du style :
Citation :tail 10 -f le_log >> le_log
ou ça constitue une destruction de ton fichier ?

ou encore tu stocke dans une var les 10 last ligne puis tu les insert dans ton fichier le tout avec un awk ?

je saisi pas trop la != entre 'opération destructive' et 'effacer tout le reste' Huh
Citation :Staline a hérité d'une Russie à la charrue, et l'a laissée avec l'arme atomique,
L'histoire n'oublie pas de telles personnes...
Churchill 1959 Chambre des Communes
+1 (1) -1 (0) Répondre
24-10-2013, 20h56
Message : #3
gruik Hors ligne
gouteur de savon
*



Messages : 757
Sujets : 44
Points: 482
Inscription : Oct 2012
RE: effacer toutes les lignes sauf les 10 dernieres sans détruire le fichier
(24-10-2013, 14h06)levur a écrit : tail 10 -f le_log >> le_log

wat ? non.

non de toutes façons c'est moi qui n'étais pas réveillé ce matin et racontais passablement n'importe quoi

en fait je pensais à quelque chose du genre
Code :
sed -i 1,$((`wc -l < fichier` - 10))d fichier
pour le coup on a bien un delete inplace mais c'est justement ce qu'on ne veut pas et qui casse le tail -f

la solution est simple, pas se casser la tête :
Code :
echo "$(tail -n10 fichier)" > fichier

fin de l'histoire
Avant donc que d'écrire, apprenez à penser.
Selon que notre idée est plus ou moins obscure, l'expression la suit, ou moins nette, ou plus pure.
Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément.
(Nicolas Boileau, L'Art poétique)
+1 (2) -1 (1) Répondre
24-10-2013, 21h26
Message : #4
b0fh Hors ligne
Membre actif
*



Messages : 210
Sujets : 17
Points: 309
Inscription : Jul 2012
RE: effacer toutes les lignes sauf les 10 dernieres sans détruire le fichier
La solution avec echo va foirer lamentablement passé une certaine taille (limitation de la taille max des arguments a une commande)

Ca fait lance run message d'erreur à tail, mais techniquement, pour effacer les n dernières lignes d'un fichier en préservant le reste, l'approche correcte est de faire un truncate, soit avec la commande idoine, soit avec dd:

Code :
truncate -s $((`wc -c <"$fichier"` - `tail -n $lignes |wc -c` )) "$fichier"

Code :
dd if=/dev/null bs=1 of="$fichier" seek=$((`wc -c <"$fichier"` - `tail -n $lignes |wc -c` ))
+1 (1) -1 (0) Répondre


Atteindre :


Utilisateur(s) parcourant ce sujet : 1 visiteur(s)
N-PN
Accueil | Challenges | Tutoriels | Téléchargements | Forum | Retourner en haut