Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2741 connectés 

  FORUM HardWare.fr
  Linux et OS Alternatifs
  Codes et scripts

  [resolu] Pb de tris par date dans un fichier txt avec plrs séparateurs

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[resolu] Pb de tris par date dans un fichier txt avec plrs séparateurs

n°342069
raistlin72
Posté le 20-10-2003 à 15:51:54  profilanswer
 

Voilà je sors un rapport omniback donc sous HP UX 11.0 au format txt
 
Les lignes se présentent comme suit (il y en a environ 400) :
 
c1326714:3f45d129:4dbd:0001 [LC0360] [LC0360] [Robot_ATL_01:   104] Good 10/17/03 01:27:34 104266.88 104266.88 10/09/03 22:33:10 1065731590 Robot DLT
 
Il s'agit d'une seule et même ligne.
 
Mon but : faire un tri sur la première date qui apparaît (ici 10/17/03).
 
Ce que j'ai fait :  
more fichier | sort -o fichier_tri -t/ -k3 -k2 -k1
 
Ma question :  
En indiquant le séparateur de champs comme étant le /, ma commande est-elle suffisante ? pour un tri uniquement sur la première date la seconde (ici 10/09/03) ne m'intéressant pas du tout.


Message édité par raistlin72 le 21-10-2003 à 12:00:36
mood
Publicité
Posté le 20-10-2003 à 15:51:54  profilanswer
 

n°342076
Vinx
Posté le 20-10-2003 à 16:10:22  profilanswer
 

Si je comprends bien le résultat que tu as obtenu n'est pas correct.
Je ne maitrise pas "sort". Donc les options je ne peux pas te dire si elles sont bonnes. (En plus je ne suis pas sous Linux en ce moment...)
Par contre, je remplacerai bien le 'more' par un 'cat' étant donné que le more marque une pause à chaque page pleine. Si tu as besoin d'une pause, essaye plutôt :
cat fichier | sort ... | more
ou
sort ... < fichier | more

n°342088
raistlin72
Posté le 20-10-2003 à 16:19:53  profilanswer
 

En fait je ne sais pas si mon résultat est correct, comme il a 400 lignes à vérifier, c'est un peu long.  
A première vue il paraît correct, mais je n'en ai pas la certitude.
Dans mon cas, more ou cat sont indifférents, je ne cherche qu'une instruction capable de lire un fichier pour rediriger la sortie standard vers le sort qui ne travaille qu'avec une redirection vers son entrée.  
Du coup la pause est invisible car le résultat final est redirigé vers un fichier "fichier_tri".
Ce que je me demande c'est s'il ne fait pas aussi un tri sur la seconde date  et si oui comment cela perturbe le premier tri.
Considère-t-il les champs comme uniquement ce qu'il y a avant le / et non la totalité ce qui se trouve avant.
 
Car s'il prend tout ça pour le premier champs :
c1326714:3f45d129:4dbd:0001 [LC0360] [LC0360] [Robot_ATL_01:   104] Good 10/17/03 01:27:34 104266.88 104266.88 10/09/03 22:33:10 1065731590 Robot DLT
 
Le tri risque d'être gravement faussé, même si je force le tri en numérique par un -n
 

n°342119
alligator4​21
Posté le 20-10-2003 à 17:18:31  profilanswer
 

Code :
  1. ~ $ cat hfr
  2. c1326714:3f45d129:4dbd:0001 [LC0360] [LC0360] [Robot_ATL_01:   104] Good 10/17/03 01:27:34 104266.88 104266.88 10/09/03 22:33:10 1065731590 Robot DLT
  3. c1326714:3f45d129:4dbd:0001 [LC0360] [LC0360] [Robot_ATL_01:   104] Good 10/19/03 01:27:34 104266.88 104266.88 10/09/03 22:33:10 1065731590 Robot DLT
  4. c1326714:3f45d129:4dbd:0001 [LC0360] [LC0360] [Robot_ATL_01:   104] Good 10/13/03:27:34 104266.88 104266.88 10/09/03 22:33:10 1065731590 Robot DLT
  5. c1326714:3f45d129:4dbd:0001 [LC0360] [LC0360] [Robot_ATL_01:   104] Good 11/07/03 01:27:34 104266.88 104266.88 10/09/03 22:33:10 1065731590 Robot DLT
  6. c1326714:3f45d129:4dbd:0001 [LC0360] [LC0360] [Robot_ATL_01:   104] Good 10/05/03 01:27:34 104266.88 104266.88 10/09/03 22:33:10 1065731590 Robot DLT
  7. ~ $


Code :
  1. ~ $ cat hfr.perl
  2. #!/usr/bin/perl
  3. if( ! open (FILE,"hfr" )) {die;};
  4. {
  5.         foreach $lign (<FILE> )
  6.         {
  7.                 chomp($lign);
  8.                 if ($lign =~ /(\d+)\/(\d+)\/(\d+)/)
  9.                 {
  10.                         $a =  $3.$1.$2;
  11.                 };
  12.                 $b{$a} = $lign;
  13.         };
  14.         foreach $l (sort (keys %b) )
  15.         {
  16.                 print "$b{$l}\n";
  17.         };
  18. };
  19. close (FILE);
  20. ~ $


Code :
  1. ~ $ ./hfr.perl
  2. c1326714:3f45d129:4dbd:0001 [LC0360] [LC0360] [Robot_ATL_01:   104] Good 10/05/03 01:27:34 104266.88 104266.88 10/09/03 22:33:10 1065731590 Robot DLT
  3. c1326714:3f45d129:4dbd:0001 [LC0360] [LC0360] [Robot_ATL_01:   104] Good 10/13/03:27:34 104266.88 104266.88 10/09/03 22:33:10 1065731590 Robot DLT
  4. c1326714:3f45d129:4dbd:0001 [LC0360] [LC0360] [Robot_ATL_01:   104] Good 10/17/03 01:27:34 104266.88 104266.88 10/09/03 22:33:10 1065731590 Robot DLT
  5. c1326714:3f45d129:4dbd:0001 [LC0360] [LC0360] [Robot_ATL_01:   104] Good 10/19/03 01:27:34 104266.88 104266.88 10/09/03 22:33:10 1065731590 Robot DLT
  6. c1326714:3f45d129:4dbd:0001 [LC0360] [LC0360] [Robot_ATL_01:   104] Good 11/07/03 01:27:34 104266.88 104266.88 10/09/03 22:33:10 1065731590 Robot DLT
  7. ~ $


 
 
edit : doit y avoir moyen de faire + simple via sed, awk et cut mais je connais pas.
a+


Message édité par alligator421 le 20-10-2003 à 17:23:30
n°342142
raistlin72
Posté le 20-10-2003 à 17:56:49  profilanswer
 

En tout cas merci pour ton aide.

n°342145
becket
Posté le 20-10-2003 à 18:02:19  profilanswer
 

Beaucoup plus simple : D ( sous linux )  
 
 sort +7n -n hfr  

n°342499
raistlin72
Posté le 21-10-2003 à 11:57:48  profilanswer
 

Malheureusement ça ne marche pas même sous linux, car le tri numérique doit s'appliquer sur les 3 champs date, d'abord l'année puis le mois puis le jour.
 
Le script perl marche tout à fait par contre.
Encore une fois merci à alligator421  :hello:


Message édité par raistlin72 le 21-10-2003 à 11:59:39

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Linux et OS Alternatifs
  Codes et scripts

  [resolu] Pb de tris par date dans un fichier txt avec plrs séparateurs

 

Sujets relatifs
radio [résolu]firebird [résolu]
[Gentoo] Question MAJ gnome [Résolu][RESOLU] MaraDNS : Compression error dans les logs....
[Résolu] [Gentoo]Emerge un peu cassé[ Mandrake 9.2 ] Pb de conn. internet speedtouch USB [résolu]
[Résolu] Reboot et mon adsl est au tas ... [Modem Eth] & Emerge SpotedInstallation de carte reseau Dlink 530tx - [Resolu] - Merci
[Debian Sid] Problème souris USB [Résolu][Gentoo] [resolu] Plus de contour aux fenetres sous Gnome
Plus de sujets relatifs à : [resolu] Pb de tris par date dans un fichier txt avec plrs séparateurs


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR