Voilà un petit awk qui devrait faire le boulot attendu :
créer un fichier trt.awk contenant :
#!/usr/bin/awk -f
BEGIN {regex="[0-9]{3}"}
/Remarks/{next}
/Group/ {print "\\section{"$0"}"}
$0 ~ regex {num=substr($0,match($0, regex),RLENGTH);
split($0,tab,num);
gsub(/^[ \t]+|[ \t]+$/,"",tab[1]);
print "\\subsection{"tab[1]"}\\TestDetails{"num"}"
}
ensuite faire le chmod qui va bien : chmod +x trt.awk
lancer la conversion avec la commande :
cat fichier_source | trt.awk > fichier_resultat
la ligne : > Tests EN
2591- Remarks
me pose un problème car elle contient aussi un nombre, je l'ai éjecté
en partant du principe qu'il y a le mot clé Remarks
Explication de la partie $0 ~ regex : si la ligne contient un nombre
d'au moins 3 chiffres ( [0-9]{3} ) on recherche ce nombre et on
l'affecte à la variable num, puis on découpe la ligne avec comme
séparateur le nombre trouvé, on récupère dans tab[1] le texte
précédant le nombre, le gsub sert à enlever les espaces au début et à
la fin de tab[1] et il ne reste plus qu'à afficher le résultat avec la
syntaxe souhaitée.
bon amusement ;-)
Le 10 mai 2012 07:21, Patrick Proniewski <patpro@???> a écrit :
> bonjour,
>
> ce n'est pas à moi qu'il faut écrire, mais à la liste ;)
>
> <script_shell_fr@???>
>
>
> On 09 mai 2012, at 19:07, Yves PETRONIN wrote:
>
>>
>> Après pas mal de difficultés, car je suis débutant, je suis parvenu avec de l'aide à extraire d'un fichier décrivant une suite d'essais (lui même extrait d'une norme) les éléments d'une séquence d'essais, et à les convertir en des commandes LaTeX, qui sont en fait des macros programmant la composition d'un document relatif aux essais de la norme.
>>
>> Il me reste 2 difficultés non résolues, et un peu d'aide encore me ferait du bien. Merci.
>>
>> 1 Je voudrais, dans le fichier cible (de commandes LateX) mettre un espace entre "Group" et le N° du groupe, et obtenir par exemple \section{Group 0} et non \section{Group0}
>> 2 Je voudrais dans le fichier cible obtenir dans le titre XXXXXX de chaque commande \subsection{XXXXXX} la totalité de la description de l'essai et non comme maintenant, la description plus ou moins tronquée selon le nombre de champs du texte, (problème de séparateur que je n'ai pu régler...) et donc obtenir par exemple:
>>
>> \subsection{Examination of dimensions and mass} \TestDetails{102}
>>
>> au lieu de
>>
>> "\subsection{Examination of} \TestDetails{102}"
>>
>>
>>
>> #Début fichier source
>> Table 6
>>
>> Tests EN 2591- Remarks
>>
>> All models
>> Group 0
>> Visual examination 101
>> Examination of dimensions and mass 102 To be performed on one pair per layout, in
>> sealed and un-sealed versions
>> Contact insertion and extraction forces 412 To be performed on one pair per layout, in
>> sealed and un-sealed versions
>> Measurement of insulation resistance 206 Only specimens of group 6
>> Voltage proof test 207 Only specimens of group 6
>> Contact resistance - Low level 201
>> Contact resistance at rated current 202
>> Mating and unmating forces 408 On specimens of groups 2, 4 and 6
>> Visual examination 101
>> Group 1
>> Rapid change of temperature 305
>> Visual examination 101
>> Interfacial sealing 324
>> Measurement of insulation resistance 206 Immersed connectors
>> Voltage proof test 207 Immersed connectors
>> Insert retention in housing (axial) 410
>> Contact retention in insert 409
>> Mechanical strength of rear accessories 420
>> Contact retention system effectiveness 426
>> (removable contact walkout)
>> Visual examination 101
>> Group 2
>> Contact retention in insert 409
>> Retention of coding and attachment system in See 8.2.
>> -
>> insert
>> Rapid change of temperature 305
>> Group 3
>> # fin du fichier source (qui continue en fait avec d'autres essais du groupe 3, groupe 4, etc..
>>
>> # Début script awk
>> #!/bin/bash
>> awk '
>> $1 == "Group" {printf("\\section{%s%d}\n", $1, $2); next}
>> {for (i=1; i<=NF; i++)
>> if ($i ~ /^[0-9][0-9][0-9]$/) {
>> printf("\\subsection{"$1" \t "$2"} \\TestDetails{%d}\n", $i)
>> break
>> }}'
>> #Fin script awk
>>
>>
>>
>> #début fichier cible actuel
>> \section{Group0}
>> \subsection{Visual examination} \TestDetails{101}
>> \subsection{Examination of} \TestDetails{102}
>> \subsection{Contact insertion} \TestDetails{412}
>> \subsection{Measurement of} \TestDetails{206}
>> \subsection{Voltage proof} \TestDetails{207}
>> \subsection{Contact resistance} \TestDetails{201}
>> \subsection{Contact resistance} \TestDetails{202}
>> \subsection{Mating and} \TestDetails{408}
>> \subsection{Visual examination} \TestDetails{101}
>> \section{Group1}
>> \subsection{Rapid change} \TestDetails{305}
>> \subsection{Visual examination} \TestDetails{101}
>> \subsection{Interfacial sealing} \TestDetails{324}
>> \subsection{Measurement of} \TestDetails{206}
>> \subsection{Voltage proof} \TestDetails{207}
>> \subsection{Insert retention} \TestDetails{410}
>> \subsection{Contact retention} \TestDetails{409}
>> \subsection{Mechanical strength} \TestDetails{420}
>> \subsection{Contact retention} \TestDetails{426}
>> \subsection{Visual examination} \TestDetails{101}
>> \section{Group2}
>> \subsection{Contact retention} \TestDetails{409}
>> \subsection{Rapid change} \TestDetails{305}
>> \subsection{Low air} \TestDetails{311}
>> \subsection{Mechanical endurance} \TestDetails{406}
>> \subsection{Mating and} \TestDetails{408}
>> \subsection{Engagement of} \TestDetails{216}
>> \subsection{Shock 402} \TestDetails{402}
>> \subsection{Sinusoidal and} \TestDetails{403}
>> \subsection{Damp heat} \TestDetails{304}
>> \subsection{Measurement of} \TestDetails{206}
>> \subsection{Voltage proof} \TestDetails{207}
>> \subsection{Visual examination} \TestDetails{101}
>> \section{Group3}
>> \subsection{Electrical overload} \TestDetails{210}
>> .......................................
>> #fin fichier cible actuel
>>
>>
>> #début fichier cible souhaité
>> \section{Group 0}
>> subsection{Visual examination} \TestDetails{101}
>> \subsection{Examination of dimensions and mass} \TestDetails{102}
>> \subsection{Contact insertion and extraction forces} \TestDetails{412}
>> \subsection{Measurement of insulation resistance} \TestDetails{206}
>> .......................etc
>>
>>
>>
>
>
> _______________________________________________
> archives :
> http://listes.patpro.net/list/sshfr.fr.html
> http://listes.patpro.net/mailman/listinfo/script_shell_fr
>
_______________________________________________
archives :
http://listes.patpro.net/list/sshfr.fr.html
http://listes.patpro.net/mailman/listinfo/script_shell_fr