Mise en tampon
Mise en tampon (en anglais buffering) : la bibliothèque C, que la plupart des outils utilisent pour écrire, accumule la sortie standard dans un tampon de quelques kilooctets et ne l'écrit qu'une fois plein, sauf quand la sortie est un terminal : elle écrit alors à chaque fin de ligne. La sortie d'erreur, elle, n'est pas mise en tampon.
Invisible au terminal, ce comportement devient flagrant dans un tube qui suit un flux continu, comme tail -F journal | grep 503 | cut ... : grep, qui n'écrit plus vers un terminal, retient ses lignes et la suite du tube ne voit rien pendant de longues minutes. Les remèdes : une option propre à l'outil (grep --line-buffered, sed -u, fflush() dans awk, jq --unbuffered), ou stdbuf -oL de coreutils, qui ne fonctionne qu'avec les programmes qui utilisent les tampons de la bibliothèque C.
Dans les cours
- Traiter du texte : grep, sed, awk, jq, leçon 1 : Penser en flux : lignes, champs et petits outils
- Traiter du texte : grep, sed, awk, jq, leçon 5 : awk : un langage pour les lignes et les champs
- Traiter du texte : grep, sed, awk, jq, leçon 6 : awk : agréger, joindre et produire un rapport