• STATISTIQUES
  • Il y a eu un total de 1 membres et 12916 visiteurs sur le site dans les dernières 24h pour un total de 12 917 personnes!


    Membres: 2 433
    Discussions: 3 585
    Messages: 32 831
    Tutoriels: 78
    Téléchargements: 38
    Sites dans l'annuaire: 58


  • ANNUAIRE
  • [FR] Forum-Webmaster
    Une communauté webmaster pour apporter / recevoir de l'aide en création de site internet. Webmaster...
    Webmaster
    [EN] Reddit
    Subreddit dédié à la sécurité informatique.
    Hacking
    [EN] Listbrain Version 3
    Site proposant 66 challenges présentés dans une liste mélangée.
    Challenges
    [FR] µContest
    µContest est un site de challenges de programmation, c'est à dire qu'il propose des épreu...
    Hacking
    [EN] osix
    Site de challenge qui utilise un système de level on chaque épreuve doit être réussie avant d'accédÃ...
    Challenges
    [FR] dcode
    dcode.fr est le site indispensable pour décoder des messages, tricher aux jeux de lettres, résoudre des énigmes...
    Outils / Add-on
    [FR] Microcontest
    Cryptographie: 7, Mathématiques: 8, Image Son Vidéo: 5, Intelligence artificielle: 3, Réseau: 2, Divers: 7, Phy...
    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