From 70dba190ea0b771206c9780e615f84eafe2c4285 Mon Sep 17 00:00:00 2001 From: Jephte CLAIN Date: Tue, 21 Jan 2014 12:07:28 +0400 Subject: [PATCH] support des version locale-aware --- uawk | 53 +++++++++++++++++++++++++++++++++++------------------ 1 file changed, 35 insertions(+), 18 deletions(-) diff --git a/uawk b/uawk index 4f11ae4..c586464 100755 --- a/uawk +++ b/uawk @@ -1,11 +1,13 @@ #!/bin/bash # -*- coding: utf-8 mode: sh -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8 +ALIASES=(awkrun awkfsv2csv awkcsv mergecsv sortcsv) if [ "$#" -eq 1 -a "$1" == --nutools-makelinks ]; then # créer les liens scriptname="$(basename "$0")" - for alias in awkrun awkfsv2csv awkcsv mergecsv sortcsv; do + for alias in "${ALIASES[@]}"; do ln -s "$scriptname" "$alias" + ln -s "$scriptname" "l$alias" done exit 0 fi @@ -14,54 +16,69 @@ source "$(dirname "$0")/ulib/ulib" && urequire DEFAULTS awk || exit 1 +# si on lance le script uawk, donner la possibilité de choisir l'outil +if [ "$scriptname" == uawk ] && array_contains ALIASES "${1#l}"; then + scriptname="$1" + shift +fi + +# choix de la version des scripts: tient compte de la locale ou non +if [ "${scriptname#l}" != "$scriptname" ]; then + prefix=l + Clang= +else + prefix=c + Clang=1 +fi + if [ "$scriptname" == "awkcsv" ]; then [ $# -eq 1 -a "$1" == --help ] && exit_with uecho "$scriptname: wrapper autour de awk pour traiter des fichier csv -note: ce script ne tient pas compte de la locale: il travaille avec LANG=C - +${Clang:+note: ce script ne tient pas compte de la locale: il travaille avec LANG=C +} USAGE - $scriptname [-b before] -e script [-a after] [headers...] [-- inputfiles...] + $scriptname [-b before] -e script [-a after] -- [headers...] [-- inputfiles...] $__AWKCSV_HELP" - cawkcsv "$@" + "${prefix}awkcsv" "$@" elif [ "$scriptname" == "awkfsv2csv" ]; then [ $# -eq 1 -a "$1" == --help ] && exit_with uecho "$scriptname: wrapper autour de awk pour transformer un fichier à colonnes fixes en fichier csv -note: ce script ne tient pas compte de la locale: il travaille avec LANG=C - +${Clang:+note: ce script ne tient pas compte de la locale: il travaille avec LANG=C +} USAGE - $scriptname [header:sizes...] [-- inputfiles...] + $scriptname [options] -- [header:sizes...] [-- inputfiles...] $__AWKFSV2CSV_HELP" - cawkfsv2csv "$@" + "${prefix}awkfsv2csv" "$@" elif [ "$scriptname" == "mergecsv" ]; then [ $# -eq 1 -a "$1" == --help ] && exit_with uecho "$scriptname: fusionner deux fichiers csv sur un champ commun -note: ce script ne tient pas compte de la locale: il travaille avec LANG=C - +${Clang:+note: ce script ne tient pas compte de la locale: il travaille avec LANG=C +} USAGE $scriptname [options] left right -k field $__MERGECSV_HELP" - cmergecsv "$@" + "${prefix}mergecsv" "$@" elif [ "$scriptname" == "sortcsv" ]; then [ $# -eq 1 -a "$1" == --help ] && exit_with uecho "$scriptname: trier un fichier csv sur un champ -note: ce script ne tient pas compte de la locale: il travaille avec LANG=C - +${Clang:+note: ce script ne tient pas compte de la locale: il travaille avec LANG=C +} USAGE $scriptname [options] input -k field $__SORTCSV_HELP" - csortcsv "$@" + "${prefix}sortcsv" "$@" else [ $# -eq 1 -a "$1" == --help ] && exit_with uecho "$scriptname: wrapper autour de awk rajoutant des fonctions supplémentaires -note: ce script ne tient pas compte de la locale: il travaille avec LANG=C - +${Clang:+note: ce script ne tient pas compte de la locale: il travaille avec LANG=C +} USAGE $scriptname [var=value...] script [-- inputfiles...] @@ -69,5 +86,5 @@ Lancer awk avec un script préparé de la manière spécifiée ci dessous. $__AWKDEF_HELP" - cawkrun -f "$@" + "${prefix}awkrun" -f "$@" fi