diff --git a/lib/ulib/awk b/lib/ulib/awk index 6e9bec4..d224539 100644 --- a/lib/ulib/awk +++ b/lib/ulib/awk @@ -1768,24 +1768,28 @@ Afficher les champs spécifiés pour traitement par le shell -s, --skip-fields SKIPFIELDS Exclure les champs spécifiés. SKIPFIELDS est une liste de champs séparés par des virgules. + -h, --dump-headers Inclure les en-têtes dans la sortie. Elles sont traitées exactement comme une ligne de données. +--hname HNAME + Spécifier le nom à utiliser pour afficher les en-têtes avec l'option -h -n, --name NAME - Spécifier le nom pour les options -f, -a, etc. + Spécifier le nom à utiliser pour les options -f, -a, -b -f, --function Afficher les champs comme l'appel d'une fonction, e.g: dump value00 value01... dump value10 value11... C'est la méthode d'affichage par défaut. L'option -n permet de spécifier le - nom de la fonction, qui vaut 'dump' par défaut + nom de la fonction, qui vaut 'dump' par défaut. Avec -h, le nom par défaut + est 'dumph' -a, --array Afficher les champs comme les valeurs d'un tableau, e.g: values=(value00 value01...) values=(value10 value11...) L'option -n permet de spécifier le nom du tableau, qui vaut 'values' par - défaut + défaut. Avec -h, le nom par défaut est 'names' -b, --array-function Afficher les champs comme l'initialisation des valeurs d'un tableau suivi de l'appel d'une fonction, e.g: @@ -1794,12 +1798,13 @@ Afficher les champs spécifiés pour traitement par le shell values=(value10 value11...) dump Le nom du tableau est fixé à 'values'. L'option -n permet de spécifier le - nom de la fonction, qui vaut 'dump' par défaut" + nom de la fonction, qui vaut 'dump' par défaut. Avec -h le nom par défaut + est 'dumph'" function ldumpcsv() { eval "$(utools_local)" local skip= parse_headers=1 keepf skipf show_headers - local name dump=function + local dump=function name hname parse_opts "${PRETTYOPTS[@]}" \ -S:,--skip:,--skip-lines:,--skiplines: skip= \ -H,--parse-headers parse_headers=1 \ @@ -1808,6 +1813,7 @@ function ldumpcsv() { -s:,--skip:,--skip-fields:,--skipfields: skipf= \ -h,--dump-headers show_headers=1 \ -n:,--name: name= \ + --hname: hname= \ -f,--function dump=function \ -a,--array dump=array \ -b,--array-function dump=array-function \ @@ -1822,6 +1828,12 @@ function ldumpcsv() { else array_add args -n fi + if [ -z "$hname" ]; then + case "$dump" in + function|array-function) hname=dumph;; + array) hname=names;; + esac + fi if [ -z "$name" ]; then case "$dump" in function|array-function) name=dump;; @@ -1832,8 +1844,8 @@ function ldumpcsv() { local -a fields fields=("$@") - awkcsv "${args[@]}" -v show_headers:int="$show_headers" -v name="$name" -v dump="$dump" -v fields[@] -e ' -function dump_values(values) { + awkcsv "${args[@]}" -v show_headers:int="$show_headers" -v hname="$hname" -v name="$name" -v dump="$dump" -v fields[@] -e ' +function dump_values(name, values) { if (dump == "function") { print qarr(values, name) } else if (dump == "array") { @@ -1850,7 +1862,7 @@ function dump_values(values) { fields_count = array_len(fields) } if (show_headers) { - dump_values(fields) + dump_values(hname, fields) } } array_new(values) @@ -1859,7 +1871,7 @@ function dump_values(values) { values[i] = get(fields[i]) i++ } - dump_values(values) + dump_values(name, values) }' -a '' }