Voici une liste de techniques. Ma préférence personelle irait à la solution M4+AWK ou SED+AWK.
Pour ton fichier base de données, je te conseille d'utilsier un séparateur (comme `|') plutôt que des blancs, le séparateur est beaucoup plus facile à manipuler (AWK, sort, shell IFS).
Here-docs
Interpolation des variables dans les here-documents du shell.
Exemple:
print_usage(){
cat <<EOF${PROGNAME} [-h] Does nothing specialEOF}
Tu peux l'interfacer avec une boucle for et jouer sur le input field splitting IFS pour faire ton mailing facilement.
datasource(){
cat <<EOFPierre|21Paul|22Jacques|45EOF}
prepare_text_loop(){local saved_ifs
local name
local age
saved_ifs="$IFS"IFS='|'while read name age; do
prepare_text "$name""$age"doneIFS="$saved_ifs"}
prepare_text(){
cat <<EOF1ドル a 2ドル ansEOF}
datasource | prepare_text_loop
SED & AWK
Ici tu as un fichier externe qui contient des champs génériques comme %%NOM%% et %%AGE%%. Tu utilises AWK pour lire ta base de données et préparer une commande SED qui remplacera les variables en question. Tu peux faire le pipe vers SED directement depuis AWK.
M4 & AWK
Ici tu utilises le préprocesseur générique M4 au lieu de SED pour produire le texte final. À part cela, la technique ressemble à la précédente.
Écrire un programme spécialisé
Tu peux bien-sûr écrire un programme spécialisé dans le langage de ton choix. Cela sort un peu de ta question de départ, plutôt dans le trip «vite fait, bien fait.» Si tu es déjà à l'aise avec SED et AWK, c'est un choix sûr. Si tu ne sais pas encore programmer en M4 cela ressemble beaucoup à TeX (on écrit un programme qui écrit sa propre suite).
# Quelques exemples
Posté par Michaël (site web personnel) . En réponse au message Générer des fichiers texte selon un modèle. Évalué à 2. Dernière modification le 08 janvier 2013 à 21:03.
Voici une liste de techniques. Ma préférence personelle irait à la solution M4+AWK ou SED+AWK.
Pour ton fichier base de données, je te conseille d'utilsier un séparateur (comme `|') plutôt que des blancs, le séparateur est beaucoup plus facile à manipuler (AWK, sort, shell IFS).
Here-docs
Interpolation des variables dans les here-documents du shell.
Exemple:
Tu peux l'interfacer avec une boucle for et jouer sur le input field splitting IFS pour faire ton mailing facilement.
SED & AWK
Ici tu as un fichier externe qui contient des champs génériques comme %%NOM%% et %%AGE%%. Tu utilises AWK pour lire ta base de données et préparer une commande SED qui remplacera les variables en question. Tu peux faire le pipe vers SED directement depuis AWK.
M4 & AWK
Ici tu utilises le préprocesseur générique M4 au lieu de SED pour produire le texte final. À part cela, la technique ressemble à la précédente.
Écrire un programme spécialisé
Tu peux bien-sûr écrire un programme spécialisé dans le langage de ton choix. Cela sort un peu de ta question de départ, plutôt dans le trip «vite fait, bien fait.» Si tu es déjà à l'aise avec SED et AWK, c'est un choix sûr. Si tu ne sais pas encore programmer en M4 cela ressemble beaucoup à TeX (on écrit un programme qui écrit sa propre suite).