uawk dump: avec la méthode -a, afficher par défaut un tableau vide avant
This commit is contained in:
parent
c6b6dd41c9
commit
16c1936e65
39
lib/ulib/awk
39
lib/ulib/awk
|
@ -1795,10 +1795,15 @@ Afficher les champs spécifiés pour traitement par le shell
|
|||
est 'dumph'
|
||||
-a, --array
|
||||
Afficher les champs comme les valeurs d'un tableau, e.g:
|
||||
values=()
|
||||
values=(value00 value01...)
|
||||
values=(value10 value11...)
|
||||
L'option -n permet de spécifier le nom du tableau, qui vaut 'values' par
|
||||
défaut. Avec -h, le nom par défaut est 'names'
|
||||
Cette méthode commence par afficher de quoi initialiser le tableau à une
|
||||
valeur vide. Ainsi, si aucune ligne n'est trouvée, le tableau est néanmoins
|
||||
initialisé. Si ce comportement n'est pas désiré, il est possible d'utiliser
|
||||
l'option --no-empty
|
||||
-b, --array-function
|
||||
Afficher les champs comme l'initialisation des valeurs d'un tableau suivi de
|
||||
l'appel d'une fonction, e.g:
|
||||
|
@ -1813,7 +1818,7 @@ Afficher les champs spécifiés pour traitement par le shell
|
|||
function ldumpcsv() {
|
||||
eval "$(utools_local)"
|
||||
local skip= parse_headers=1 keepf skipf show_headers
|
||||
local dump=function name hname
|
||||
local dump=function empty=1 name hname
|
||||
parse_opts "${PRETTYOPTS[@]}" \
|
||||
-S:,--skip:,--skip-lines:,--skiplines: skip= \
|
||||
-H,--parse-headers parse_headers=1 \
|
||||
|
@ -1825,6 +1830,8 @@ function ldumpcsv() {
|
|||
--hname: hname= \
|
||||
-f,--function dump=function \
|
||||
-a,--array dump=array \
|
||||
--empty empty=1 \
|
||||
--no-empty empty= \
|
||||
-b,--array-function dump=array-function \
|
||||
@ args -- "$@" && set -- "${args[@]}" || die "$args"
|
||||
|
||||
|
@ -1853,7 +1860,22 @@ function ldumpcsv() {
|
|||
local -a fields
|
||||
fields=("$@")
|
||||
|
||||
awkcsv "${args[@]}" -v show_headers:int="$show_headers" -v hname="$hname" -v name="$name" -v dump="$dump" -v fields[@] -e '
|
||||
awkcsv "${args[@]}" -v show_headers:int="$show_headers" -v hname="$hname" -v name="$name" -v dump="$dump" -v empty_array:int="$empty" -v fields[@] -e '
|
||||
function init_fields() {
|
||||
if (do_once("init_fields")) {
|
||||
if (fields_count == 0) {
|
||||
array_copy(fields, HEADERS)
|
||||
fields_count = array_len(fields)
|
||||
}
|
||||
if (show_headers) {
|
||||
dump_values(hname, fields)
|
||||
}
|
||||
if (dump == "array" && empty_array) {
|
||||
array_new(empty)
|
||||
dump_values(name, empty)
|
||||
}
|
||||
}
|
||||
}
|
||||
function dump_values(name, values) {
|
||||
if (dump == "function") {
|
||||
print qarr(values, name)
|
||||
|
@ -1865,15 +1887,7 @@ function dump_values(name, values) {
|
|||
}
|
||||
}
|
||||
{
|
||||
if (do_once("init_fields")) {
|
||||
if (fields_count == 0) {
|
||||
array_copy(fields, HEADERS)
|
||||
fields_count = array_len(fields)
|
||||
}
|
||||
if (show_headers) {
|
||||
dump_values(hname, fields)
|
||||
}
|
||||
}
|
||||
init_fields()
|
||||
array_new(values)
|
||||
i = 1
|
||||
while (i <= fields_count) {
|
||||
|
@ -1881,6 +1895,9 @@ function dump_values(name, values) {
|
|||
i++
|
||||
}
|
||||
dump_values(name, values)
|
||||
}
|
||||
END {
|
||||
init_fields()
|
||||
}' -a ''
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue