Mon point de vue est que le shell est très bien pour combiner des traitements ensemble mais qu'il est plutôt à éviter pour implémenter ces traitements eux-mêmes. Les raisons sont que le langage rend la description de ces traitements difficile – même si certains dialectes comme bash ou zsh améliorent un peu la situation. Voici donc une procédure awk qui fait le travail, mais beaucoup d'autres langages peuvent être utilisés à sa place:
qui est appliquée sur toutes les lignes de l'entrée. Les variables 1ドル et 2ドル renvoient à la première et deuxième colonne de la ligne en cours de traitement, la déclaration BEGIN { FS=" #" } dit justement comment ces colonnes sont délimitées. La phrase seen[1ドル] est peut être un peu bizarre, elle correspond à l'ajout d'une clef sans valeur dans un tableau associatif.
Lorsque toutes les lignes ont été traitées, awk* passe au bloc END dont le contenu est lui aussi explicite.
# Éviter de faire des traitements en shell
Posté par Michaël (site web personnel) . En réponse au message concaténer et dé-dupliquer fichiers. Évalué à 3.
Mon point de vue est que le shell est très bien pour combiner des traitements ensemble mais qu'il est plutôt à éviter pour implémenter ces traitements eux-mêmes. Les raisons sont que le langage rend la description de ces traitements difficile – même si certains dialectes comme bash ou zsh améliorent un peu la situation. Voici donc une procédure awk qui fait le travail, mais beaucoup d'autres langages peuvent être utilisés à sa place:
Le cœur du programme est la partie
qui est appliquée sur toutes les lignes de l'entrée. Les variables
1ドルet2ドルrenvoient à la première et deuxième colonne de la ligne en cours de traitement, la déclarationBEGIN { FS=" #" }dit justement comment ces colonnes sont délimitées. La phraseseen[1ドル]est peut être un peu bizarre, elle correspond à l'ajout d'une clef sans valeur dans un tableau associatif.Lorsque toutes les lignes ont été traitées, awk* passe au bloc
ENDdont le contenu est lui aussi explicite.