logo Debian Debian Debian-France Debian-Facile Debian-fr.org Forum-Debian.fr Debian ? Communautés logo inclusivité

Debian-facile

Bienvenue sur Debian-Facile, site d'aide pour les nouveaux utilisateurs de Debian.

Vous n'êtes pas identifié(e).

#1 09-10-2018 15:55:11

LeDub
Membre
Lieu : Orry-la-Ville (60)
Distrib. : Debian GNU/Linux 10 (buster)
Noyau : 4.19.0-17-amd64
(G)UI : XFCE / KDE
Inscription : 18-02-2014

Analyse de templates d'apt

Bonjour,

Je cherche à préparer un fichiers preseed aux petits oignons et pour cela cette documentation https://wiki.debian.org/DebianInstaller/Preseed propose d'analyser les "templates" des paquets "udeb".
En utilisant le dépôts local apt-cacher-ng associé à un serveur de boot PXE, j'ai récupéré tous les fichiers "udeb" nécessaires pour en extraire les "templates".
À la fin de la doc, il propose un script qui supprime toutes les lignes superflues de l'extration précédentes, seulement ce nettoyage supprime les commentaires en français ! Je suis donc à la recherche d'une méthode pour avoir les commentaires en anglais et en français. Un simple grep use -fr.UTF8 n'est pas complet puisque certaines lignes sont sur plusieurs lignes.
J'ai donc imaginé supprimer le retour charriot des lignes qui ne commencent pas par «Type, Choices, Help:, Description» ou encore «Default:/» seulement le peine grave !!! Mon niveau de awk a chuté !!!!!

Voici mon code pour l'extraction de localechooser.

La partie que je teste est la suivante :

Type: select
Choices-C: BD, IN, other
Choices: Bangladesh, India, other
Choices-bn.UTF-8: বাংলাদেশ, ভারত, অন্যান্য
Description: ${TXT1}
 ${TXT2}
 .
 ${TXT3}
Description-bn.UTF-8: ${TXT1}
 ${TXT2}
 .
 ${TXT3}


j'aimerais avoir cela

Type: select
Choices-C: BD, IN, other
Choices: Bangladesh, India, other
Choices-bn.UTF-8: বাংলাদেশ, ভারত, অন্যান্য
Description: ${TXT1} ${TXT2} . ${TXT3}
Description-bn.UTF-8: ${TXT1} ${TXT2} . ${TXT3}


mais avec ce code

mawk 'NR > 5314 && NR < 5327 {print $0}'  localechooser.template.qPd5pN | awk '
BEGIN{BUFF=""}
{BUFF=$0" "
if ( $1 ~/^Type/ || $1 ~/^Choices/ || $1 ~/Help:/ || $1 ~/^Description/ || $1 ~/^Default:/ )
  {
print BUFF
BUFF=""
}
else
  BUFF=BUFF $0}'


j'ai

Type: select
Choices-C: BD, IN, other
Choices: Bangladesh, India, other
Choices-bn.UTF-8: বাংলাদেশ, ভারত, অন্যান্য
Description: ${TXT1}
Description-bn.UTF-8: ${TXT1}



Puis-je compter sur votre expertise pour obtenir ce que je souhaite ?
Merci

LeDub dépité par son incapacité !!!!

Hors ligne

#2 10-10-2018 10:19:37

LeDub
Membre
Lieu : Orry-la-Ville (60)
Distrib. : Debian GNU/Linux 10 (buster)
Noyau : 4.19.0-17-amd64
(G)UI : XFCE / KDE
Inscription : 18-02-2014

Re : Analyse de templates d'apt

Hier en postant ici ma question, j'ai eu l'idée d'aborder le problème d'un autre angle ce que j'ai fait ce matin.
Voici le code que fonctionne comme je le souhaite :

cat localechooser.template.qPd5pN | awk '
{if ( $1 ~/^Type/ || $1 ~/^Choices/ || $1 ~/Help:/ || $1 ~/^Description/ || $1 ~/^Default:/ )
printf "%s","\n"$0
else
printf "%s",$0}'


Puisque le fichier à analyser contient des codes printf, genre {}, je lui impose de ne pas les interpréter avec "%s".

Le résultat est bien celui que j'attends, c'est-à-dire chaque ligne du fichier contient une description.

Maintenant, l'étape 2 : le nettoyage de la première sélection  !
Je souhaite garder les lignes dont le 1er champ se termine par «:» ou par «-fr.UTF-8:» sans les autres «.UTF-8:». Il me semble difficile de mettre un filtre, dans awk, contenant toutes les traductions.
Connaîtriez-vous une expression rationnelles qui supprime toutes les lignes «.UTF-8:» sauf «-fr.UTF-8:» ?

LeDub qui avance trop lentement !!!

Hors ligne

Pied de page des forums