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

  FORUM HardWare.fr
  Programmation
  Shell/Batch

  Grep? besoin de la colonne d'une seq recherchee: RESOLU

 



 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Grep? besoin de la colonne d'une seq recherchee: RESOLU

n°816459
marionnet'
Posté le 06-08-2004 à 09:57:44  profilanswer
 

Bonjour,
J'ai un fichier de plusieurs lignes, dans lesquelles je recherche une sequence d'erreur. En plus d'avoir le numero de la ligne fourni par grep
 
(jusqu'à maintenant je fais:
grep -nE -i ' 15 40 ' assol_codes.csv >> erreur.out )
 
je voudrais avoir le numero de la colonne ou se trouve la sequence recherchee. Faut il rajouter une option, ou rediriger la sortie?  
 
J'ai reagrdé aussi du cote de la commande awk, mais idem pour interpréter le manuel... Il faut faire un programme ?
 
Je ne peux pas faire tout simplement:
 
[xterm] gawk -option_donnant_nb_ling -option_donnant_nb_colo 'texte a rechercher' fichier_entree >> sortie
 
?
 
J'ai trouve une commande match, mais je ne vois aps vraiment comment m'en servir.
En plus, il peut y avoir plusieurs erreurs différents sur une meme ligne de mon fichier,et je voudrais qu'il parcourt toutes les lignes, et me releve toutes les lignes ou j'ai au moins une erreur en y rajoutant l'endroit où elles sont (tableau avec match?) , comme avec grep un peu.
C pas possible?
 
Merci pour votre réflexion...
 
marion


Message édité par marionnet' le 17-08-2004 à 18:04:56
mood
Publicité
Posté le 06-08-2004 à 09:57:44  profilanswer
 

n°825326
marionnet'
Posté le 17-08-2004 à 18:11:53  profilanswer
 

Voici ce que j'ai fait:
 

Code :
  1. if test $# -ne 4       # si le nombre de parametres n'est pas 3
  2. then                    # affiche l'usage
  3.     echo 'Usage: ./rech.sh dr_annee nb_colonne fich_out fich_in'
  4.     echo 'Ce programme cherche les sequences d erreur dans le fichier'
  5.    echo 'Il renvoie un fichier avec la ligne, la colonne et l annee ou la sequence est erronee'
  6.   exit 1
  7. fi
  8. dr_annee=$1
  9. nb_colonne=$2
  10. fich_out=$3
  11. shift
  12. shift
  13. shift
  14. awk '{ nb_colonne='$nb_colonne';  dr_annee='$dr_annee'; str=$0; value=0; while (pos = match(str,/(\<(25|251|252|253|254)[ ]251\> )|(\<(10|11|15|20|253|252|254|25|26|27|30|31|32|33|34|35|36|37|38|40|41|42|44|45|46|47|50|51|61|62|63|64|70|71|72|73|74|75|81|82|83|90|91|999)[ ]252\> )|(\<(10|11|15|20|251|253|25|254|26|27|30|31|32|33|34|35|36|37|38|40|41|42|44|45|46|47|50|51|61|62|63|64|70|71|72|73|74|75|81|82|83|90|91|999)[ ]253\> )|(\<(10|11|15|20|251|252|254|25|26|27|30|31|32|33|34|35|36|37|38|40|41|42|44|45|46|47|50|51|61|62|63|64|70|71|72|73|74|75|81|82|83|90|91|999)[ ]254\> )|(\<(10|11|37|20)[ ]37\> )|(\<(10|15|25|251|252|253|254|26|27|30|31|32|33|34|35|36|38|40|41|42|44|45|46|47|50|51|61|62|63|64|70|71|72|73|74|75|81|82|83|90|91)[]20\> )|(\<(15|251|252|253|254|25|26|27|30|31|32|33|34|35|36|37|38|40|41|42|44|45|46|47|50|51|61|62|63|64|70|71|72|73|74|75|81|82|83|90|91)[ ]10\> )/)){
  15. size = RSTART + RLENGTH 
  16. R1=RSTART
  17. L1=RLENGTH
  18. str_temp=substr(str,RSTART)
  19. pos_temp=match(str_temp,/\<[0-9][0-9]*\>/)
  20. R2=RSTART
  21. L2=RLENGTH
  22. str=substr(str, R1 + L2)
  23. pos += value
  24. annee=dr_annee+1
  25. i=length($0)
  26. j=nb_colonne
  27. while(i>pos){
  28. i += -length($j)-1
  29. annee=annee-1
  30. j=j-1
  31. }
  32. print  FNR " : "  pos " : " annee " : " $O
  33. value += R1 + L2 -1     
  34. }               
  35. }' $@ > $fich_out
  36. echo Taille: ;
  37. wc -l $fich_out;


 
Cela m'affiche la ligne, la colonne, et surtout l'annee (si l'on precise avant le nombre de colonnes et la derniere annee) ou se trouve l'erreur. Par contre, j'ai encore un probleme avec els regexp. Comment ecrire '\<(tout ce qui n'est aps 251) (tout ce qui n'est aps 252) (tout ce qui n'est aps 253) 254 (zero ou plusieurs 254)\>'?
 tout en ne captant pas deux fois la meme erreur ( par exemple, '251 253 252 254 254 254'
 
Merci d'avance pour votre aide!


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Shell/Batch

  Grep? besoin de la colonne d'une seq recherchee: RESOLU

 

Sujets relatifs
Convertir un Char* en WCHAR* ? [résolu]pourquoi la racine fait jamais comme les autres ? [TreeView] [resolu ]
S'il vous plaît besoin d'aide !!!![C++] Plantage d'une dll [résolu]
Problème en visual basic - TabOrder --> Résolu[Struts] Question sur struts-config.xml[Résolu]
[batch dos RESOLU] lire nombre dans fichier et l'exploiter pour calcul[Excel][Résolu] pb de variable avec une feuille
Probleme boucle while[Résolu]Transformer une requete SQL à 1 seule colonne en un tableau.
Plus de sujets relatifs à : Grep? besoin de la colonne d'une seq recherchee: RESOLU


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