Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

vi, awk : longueur max d'enregistrement ?

2 réponses
Avatar
Bernard Bandiera
Bonjour/bonsoir.

Voila mon petit problème : j'ai un script gawk qui analyse un fichier
log applicatif pour extraire des erreurs.
Or, un programme écrit dans ce log des requêtes sql (dynamiques),
certaines de ces requêtes (monstrueuses) génèrent des enreg. de plus de
4000 caractères, et du coup mon gawk se plante (message du genre "line
too long") ; quand j'essaie d'ouvrir par vi le fichier, même message.

D'où mes questions : quelle est la limite ? est-elle constante, ou
dépend-elle de la version de gawk, de l'Unix sur lequel on tourne ?
La réponse orientera le programmeur qui pourra "saucissonner" son printf...

Pour info, gawk version 3.1.1.

Merci.

PS : ben si j'ai googlé à outrance, mais rien trouvé :(
PS2 : non, je peux pas utiliser du Perl (sinon, je l'aurais fait à la
place de gawk)

Bernard.

2 réponses

Avatar
Nicolas George
Bernard Bandiera wrote in message
<4329bc1a$0$1736$:
Voila mon petit problème : j'ai un script gawk qui analyse un fichier
log applicatif pour extraire des erreurs.
Or, un programme écrit dans ce log des requêtes sql (dynamiques),
certaines de ces requêtes (monstrueuses) génèrent des enreg. de plus de
4000 caractères, et du coup mon gawk se plante (message du genre "line
too long") ; quand j'essaie d'ouvrir par vi le fichier, même message.

D'où mes questions : quelle est la limite ? est-elle constante, ou
dépend-elle de la version de gawk, de l'Unix sur lequel on tourne ?
La réponse orientera le programmeur qui pourra "saucissonner" son printf...


Single Unix définit :

Text File
A file that contains characters organized into one or more lines. The lines
do not contain NUL characters and none can exceed {LINE_MAX} bytes in
length, including the <newline>.

LINE_MAX vaut au moins _POSIX2_LINE_MAX = 2048, et est laissé à la
discrétion de l'implémentation.

Ça, c'est la théorie. En pratique, chaque programme peut implémenter ses
propres limites, tant qu'elle est au delà. Je viens de tester avec gawk
(3.1.4), et il n'a pas l'air d'avoir de limite, en tout cas il avale très
bien une ligne de 408000 caractères.

Avatar
Bernard Bandiera
Single Unix définit :

Text File
A file that contains characters organized into one or more lines. The lines
do not contain NUL characters and none can exceed {LINE_MAX} bytes in
length, including the <newline>.

LINE_MAX vaut au moins _POSIX2_LINE_MAX = 2048, et est laissé à la
discrétion de l'implémentation.

Ça, c'est la théorie. En pratique, chaque programme peut implémenter ses
propres limites, tant qu'elle est au delà. Je viens de tester avec gawk
(3.1.4), et il n'a pas l'air d'avoir de limite, en tout cas il avale très
bien une ligne de 408000 caractères.


Merci pour l'info.
Mon gawk est du 3.1.1. Où, dans le sytème, est défini ce LINE_MAX ? En
d'autres termes, où puis-je le trouver ? sachant que je n'ai pas les
droits root (mais je peux toujours demander à un admin...)
Et cette limite est-elle valable aussi pour vi ? Parce que j'ai le même
message.

A défaut, il faudrait que je fasse des tests avec différentes valeurs,
en procédant par dichotomie... Mais je pense que je vais demander au
développeur de limiter à 1000 caractères son output, je serai tranquille.

Bon week-end !