\chapter{scripting}

\section{Awk} \index{Awk}


Quelques \textsl{oneliners} de bon aloi pour vous donner
une idée du langage\dots

\begin{verbatim}
  cat                      { print $0 }    or just    1
  grep pattern             /pattern/
  head -n 5                NR <= 5
  cut -f1                  { print $1 }
  tr a-z A-Z               { print toupper($0) }
  sed 's/hi/ho/g'          gsub(/hi/,"ho")
  wc -l                    END { print NR }
\end{verbatim}

Vous pouvez déja constater une certaine élégance portée par une
grande simplicité logique, une sorte d'axiome de base, de
méthologie très \textsc{kiss} :
on va procéder en quelque sorte « demi-dalle par demi-dalle ».

% ===============================================================
\subsection{Un exemple simple}

À partir d'un jeu de données structurées, nous allons générer un
fichier \texttt{.inc} contenant un objet pour Povray\index{Povray}.
Un cas d'école : un élément par ligne, les valeurs sont séparées par
des espaces.

\lstinputlisting[]{code/awk/dataset}

Ces données sont les coordonnées \textsc{x,y,z} et le rayon d'une
petite collection de bubulles. Pratiquement, une représentation
sommaire d'une sphère de povray\footnote{SDL keyword: \texttt{Sphere}}.

Le fichier à générer est en trois partie : l'en-tête, la liste
des bubulles\index{bubulle} et l'en-pied, ce qui est bien raccord
avec la structure de déroulement d'un script Awk, comme nous allons
le voir ici-même~:

\lstinputlisting[]{code/awk/mkunion.awk}


% XXX to be continued XXX

% ===============================================================
