#1 Le 13/08/2013, à 13:01
- cambronne
tri par date ds log.txt [resolu]
Bonjour,
J'essaye de faire un tri par date dans un fichier de log, ou j'ai des lignes qui vont de 03/2012 à 08/2013
la 4° colonne est de type [01/Jan/2013:21:22:38
J'ai essayé ca, mais j'ai tjs 2013 en premier... Where is (my) bug?
sort -k 4.2,4.12n -M log.txt
C
Dernière modification par cambronne (Le 13/08/2013, à 14:47)
Hors ligne
#2 Le 13/08/2013, à 13:50
- pingouinux
Re : tri par date ds log.txt [resolu]
Bonjour,
Peux-tu montrer quelques lignes du fichier ?
Ajouté :
Voici une suggestion en python :
$ cat mon_tri.py
#! /usr/bin/python3
# -*- coding: utf-8 -*-
import sys, time
def cle(lig) :
return time.mktime(time.strptime(lig.split()[3][1:12],'%d/%b/%Y'))
with open(sys.argv[1],'r') as f : ligs=f.readlines()
ligs.sort(key=cle)
for lig in ligs : print(lig,end='')
Et pour lancer le tri :
./mon_tri.py log.txt
Dernière modification par pingouinux (Le 13/08/2013, à 14:36)
Hors ligne
#3 Le 13/08/2013, à 14:46
- cambronne
Re : tri par date ds log.txt [resolu]
Merci, je m'en suis sorti (pas tres glorieusement je le reconnais) en effectuant un tri sur le une autre colonne (nom de fichier d'où provient la ligne de log, comportant la mention du mois et de l'année)
Par contre je garde ton script dans un coin THKS !
(et un jour, c'est promis je me mets a Python)
C
Hors ligne
#4 Le 13/08/2013, à 15:54
- Postmortem
Re : tri par date ds log.txt [resolu]
Salut,
Avec sort, si ton séparateur est exactement une espace :
sort -s -t ' ' -k 4.9n -k 4.5M -k 4.2n -k 4.14,4.21 log.txt
J'ai trouvé ça dans "info sort" (faut lire les docs !! )
Mot' a dit : « Un Hellfest sans Slayer, c'est comme une galette-saucisse sans saucisse ! »
Hors ligne