2022-04-01 14:23:45 +02:00
|
|
|
\chapter{scripting}
|
|
|
|
|
|
|
|
\section{Awk} \index{Awk}
|
|
|
|
|
|
|
|
|
|
|
|
Quelques \textsl{oneliners} de bon aloi pour vous donner
|
|
|
|
une idée du langage\dots
|
|
|
|
|
|
|
|
\begin{verbatim}
|
2023-02-11 12:19:00 +01:00
|
|
|
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 }
|
2022-04-01 14:23:45 +02:00
|
|
|
\end{verbatim}
|
|
|
|
|
2023-02-11 12:19:00 +01:00
|
|
|
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 ».
|
|
|
|
|
2022-04-01 14:23:45 +02:00
|
|
|
% ===============================================================
|
|
|
|
\subsection{Un exemple simple}
|
|
|
|
|
|
|
|
À partir d'un jeu de données structurées, nous allons générer un
|
2022-06-09 21:08:46 +02:00
|
|
|
fichier \texttt{.inc} contenant un objet pour Povray\index{Povray}.
|
2023-02-11 12:19:00 +01:00
|
|
|
Un cas d'école : un élément par ligne, les valeurs sont séparées par
|
2022-04-01 14:23:45 +02:00
|
|
|
des espaces.
|
|
|
|
|
|
|
|
\lstinputlisting[]{code/awk/dataset}
|
|
|
|
|
2023-02-11 12:19:00 +01:00
|
|
|
Ces données sont les coordonnées \textsc{x,y,z} et le rayon d'une
|
2022-04-01 14:23:45 +02:00
|
|
|
petite collection de bubulles. Pratiquement, une représentation
|
2023-02-11 12:19:00 +01:00
|
|
|
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
|
2022-04-01 14:23:45 +02:00
|
|
|
|
|
|
|
% ===============================================================
|