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

  FORUM HardWare.fr
  Programmation
  Shell/Batch

  [bash] grep sur des lignes très longues, souci

 



 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[bash] grep sur des lignes très longues, souci

n°2116414
Drepanon
The Not-So-Grim Reaper
Posté le 13-12-2011 à 10:22:57  profilanswer
 

Bonjour à tous !
 
Je suis en train de coder un petit script bash qui doit parser le contenu d'une page html pour y retrouver certains motifs (des séquences de nombres) planqués dans des div.
Jusqu'aujourd'hui, je faisais simplement un grep sur la page en y cherchant la séquence de nombres, puis un sed sur chaque ligne pour en retirer tout ce qui ne m'intéressait pas.
 
La page que je parse a changé, et maintenant, dans la source du .htm, l'intégralité des balises dans lesquelles je recherche mes séquences se retrouve sur une seule ligne de plus de 59000 caractères, le dev a visiblement omis d'intégrer des retours chariot...
 
Du coup, grep perd complètement les pédales et renonce au-delà de 16000 caractères environ.
Une solution pour faire le boulot ? Je suis un peu perdu...
 
Merci !

mood
Publicité
Posté le 13-12-2011 à 10:22:57  profilanswer
 

n°2116426
Profil sup​primé
Posté le 13-12-2011 à 10:56:06  answer
 

salut,
 
pourquoi utiliser grep ? utilise directement sed !

n°2116440
Drepanon
The Not-So-Grim Reaper
Posté le 13-12-2011 à 11:33:43  profilanswer
 

Salut et merci pour ta réponse :)
 
grep à l'origine parce que j'utilisais le script pour contrôler sur la sortie console les patterns qu'il trouvait. Aussi parce que sed, une fois sorti du substitute, je suis un peu perdu. Je crois comprendre que je peux utiliser la commande insertion pour insérer des trucs après un pattern détecté, mais je ne sais pas comment lui faire passer un retour chariot. Il faut l'échapper d'une manière ou d'une autre ?
 
En gros, si j'ai une source du genre :

Citation :

<html>
 
[balises head, meta, début du body...]
 
[plein de balises à la con]0123456789[plein de balises à la con]9876543210[plein de balises à la con]
 
[fin du body...]
</html>


 
À quoi va ressembler mon sed pour extraire, sur une sortie de n lignes, les n patterns de chiffres trouvés sur la ligne unique du dessus ?
 
Merci beaucoup :)

n°2116503
Profil sup​primé
Posté le 13-12-2011 à 16:06:20  answer
 

regarde si ça te va

Code :
  1. sed '/\][0-9]\{10\}\[/! d; s/\[[^]]*\]/ - /g' fichier.html

enfin l'idée, c'est :
si il n'y a pas 10 caractères numériques qui se suivent sur la ligne, elle est effacée (d - delete)
dans le cas contraire, on substitue tout ce qui est entre crochets, crochets compris (pour l'exemple donné) par <espace>-<espace>

n°2116561
Drepanon
The Not-So-Grim Reaper
Posté le 13-12-2011 à 22:32:24  profilanswer
 

Ça fonctionne proprement, merci bien à toi :)


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

  [bash] grep sur des lignes très longues, souci

 

Sujets relatifs
[Résolu][Bash] Recherche ligne par ligne dans un fichier .gzBash aide projet
html/css : des "lignes à hauteur dynamiques" ?VB pour envoyer par mail plusieurs lignes excel
[SQL] Fusionner plusieurs lignes(VB.NET) Meilleure façon de gérer une liste de 230.000 lignes ?
[bash][windows] Utilisation de tr pour le majuscules[bash] [Windows] traitement a partir de nom de fichier
script bash recuperer FAI[Résolu] Gestion d'un Top10 en %hash et de la "casse"
Plus de sujets relatifs à : [bash] grep sur des lignes très longues, souci


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