Salut à tous,
Je fais pas mal de traitement de larges fichiers (de l'ordre du million de lignes), et je galère pour le moment avec des outils certainement non adéquats. J'utilise des outils comme grep, sed, et cut pour récupérer les valeurs qui m'intéressent, et réécris mes fichiers transformés avec des printf et des redirections de flux vers des fichiers temporaires. Pire encore, il m'arrive d'écrire un traitement automatisé sur une ligne seule, puis d'exécuter ce traitement dans une boucle sh pour parcourir le fichier entier...
Je me doute bien que ce n'est pas la solution optimale. Je pense maîtriser grep, tr et cut, mais ne sais que très peu utiliser sed, et ne connais absolument pas awk et perl. Je mentionne ces outils parce-que je pense à ceux-là, mais j'en oublie certainement.
Je cherche essentiellement un moyen de parcourir ces fichiers gigantesques, de filtrer selon des expressions régulières (éventuellement multi-lignes), de capturer des variables, et d'écrire des lignes transformées à partir des variables capturées dans un nouveau fichier (ou sur stdin). De la modification sur place ne m'intéresse pas vraiment. Quel serait l'outil le plus adéquat ? Ça ne me dérange pas d'avoir à consacrer quelques heures à apprendre un outil complexe pour faire de la magie noire. Je souhaite juste que l'investissement soit rentable.
Merci pour vos conseils !
Duna
sed, tr, awk, grep, perl, ...
- Mimoza
- Contributeur
- Messages : 655
- Inscription : 22 avr. 2016, 12:00
- Localisation : Terre
- Status : Hors-ligne
J'ai eu a faire ce genre de manipulation mais pas sur des fichiers aussi immense. J'avais opté pour AWK du fait de son langage de scripting qui me paraissait plus compréhensible que celui de SED.
Pour Perl c'est un langage de programmation donc même s'il est très adapté au traitement de texte il fait bien plus que cela. Il a été pensé pour remplacer des traitement SED/AWK/SH/GREP/CUT qui devenait trop gros.
Pour Perl c'est un langage de programmation donc même s'il est très adapté au traitement de texte il fait bien plus que cela. Il a été pensé pour remplacer des traitement SED/AWK/SH/GREP/CUT qui devenait trop gros.
- Dunatotatos
- Membre
- Messages : 426
- Inscription : 11 mai 2016, 20:56
- Status : Hors-ligne
Je vois que awk ne gère pas les captures dans les regex : https://stackoverflow.com/questions/295 ... ne-pattern
C'est vrai ?
C'est vrai ?
- funkygoby
- Membre
- Messages : 106
- Inscription : 15 mai 2016, 15:54
- Status : Hors-ligne
Je me suis servi de "sed" (pour "Stream Editing") dernièrement pour remplacer "../book.ly" par "book.ly" et mon pseudo par mon nom complet dans 250 fichiers répartis dans des dossier. Au dela de ça, je sais pas trop si c'est adapté.