uawk dump: ajouter le format -v qui affiches des variables individuelles
This commit is contained in:
parent
d57839dc3c
commit
b8bf04b689
76
lib/ulib/awk
76
lib/ulib/awk
|
@ -1798,12 +1798,13 @@ Afficher les champs spécifiés pour traitement par le shell
|
||||||
values=()
|
values=()
|
||||||
values=(value00 value01...)
|
values=(value00 value01...)
|
||||||
values=(value10 value11...)
|
values=(value10 value11...)
|
||||||
|
Bien entendu, cela n'a sens que si une seule ligne résultat est attendue.
|
||||||
L'option -n permet de spécifier le nom du tableau, qui vaut 'values' par
|
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'
|
défaut. Avec -h, le nom par défaut est 'names'
|
||||||
Cette méthode commence par afficher de quoi initialiser le tableau à une
|
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
|
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
|
initialisé. Si ce comportement n'est pas désiré, il est possible d'utiliser
|
||||||
l'option --no-empty
|
l'option --no-reset
|
||||||
-b, --array-function
|
-b, --array-function
|
||||||
Afficher les champs comme l'initialisation des valeurs d'un tableau suivi de
|
Afficher les champs comme l'initialisation des valeurs d'un tableau suivi de
|
||||||
l'appel d'une fonction, e.g:
|
l'appel d'une fonction, e.g:
|
||||||
|
@ -1813,12 +1814,30 @@ Afficher les champs spécifiés pour traitement par le shell
|
||||||
dump
|
dump
|
||||||
Le nom du tableau est fixé à 'values'. L'option -n permet de spécifier le
|
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. Avec -h le nom par défaut
|
nom de la fonction, qui vaut 'dump' par défaut. Avec -h le nom par défaut
|
||||||
est 'dumph'"
|
est 'dumph'
|
||||||
|
-v, --var
|
||||||
|
Affiche les champ en initialisant des variables, e.g:
|
||||||
|
names=(header0 header1)
|
||||||
|
header0=
|
||||||
|
header1=
|
||||||
|
header0=value00
|
||||||
|
header1=value01
|
||||||
|
...
|
||||||
|
header0=value10
|
||||||
|
header1=value11
|
||||||
|
...
|
||||||
|
Bien entendu, cela n'a sens que si une seule ligne résultat est attendue.
|
||||||
|
Cette option implique -h. Le nom par défaut du tableau qui liste les
|
||||||
|
variables est names.
|
||||||
|
Cette méthode commence par réinitialiser les variables à la valeur vide.
|
||||||
|
Ainsi, si aucune ligne n'est trouvée, les variables sont vides. Si ce
|
||||||
|
comportement n'est pas désiré, il est possible d'utiliser l'option
|
||||||
|
--no-reset"
|
||||||
|
|
||||||
function ldumpcsv() {
|
function ldumpcsv() {
|
||||||
eval "$(utools_local)"
|
eval "$(utools_local)"
|
||||||
local skip= parse_headers=1 keepf skipf show_headers
|
local skip= parse_headers=1 keepf skipf show_headers
|
||||||
local dump=function empty=1 name hname
|
local dump=function reset=1 name hname
|
||||||
parse_opts "${PRETTYOPTS[@]}" \
|
parse_opts "${PRETTYOPTS[@]}" \
|
||||||
-S:,--skip:,--skip-lines:,--skiplines: skip= \
|
-S:,--skip:,--skip-lines:,--skiplines: skip= \
|
||||||
-H,--parse-headers parse_headers=1 \
|
-H,--parse-headers parse_headers=1 \
|
||||||
|
@ -1830,9 +1849,10 @@ function ldumpcsv() {
|
||||||
--hname: hname= \
|
--hname: hname= \
|
||||||
-f,--function dump=function \
|
-f,--function dump=function \
|
||||||
-a,--array dump=array \
|
-a,--array dump=array \
|
||||||
--empty empty=1 \
|
--reset reset=1 \
|
||||||
--no-empty empty= \
|
--no-reset reset= \
|
||||||
-b,--array-function dump=array-function \
|
-b,--array-function dump=array-function \
|
||||||
|
-v,--var dump=var \
|
||||||
@ args -- "$@" && set -- "${args[@]}" || die "$args"
|
@ args -- "$@" && set -- "${args[@]}" || die "$args"
|
||||||
|
|
||||||
args=(
|
args=(
|
||||||
|
@ -1844,10 +1864,12 @@ function ldumpcsv() {
|
||||||
else array_add args -n
|
else array_add args -n
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
[ "$dump" == var ] && show_headers=1
|
||||||
|
|
||||||
if [ -z "$hname" ]; then
|
if [ -z "$hname" ]; then
|
||||||
case "$dump" in
|
case "$dump" in
|
||||||
function|array-function) hname=dumph;;
|
function|array-function) hname=dumph;;
|
||||||
array) hname=names;;
|
array|var) hname=names;;
|
||||||
esac
|
esac
|
||||||
fi
|
fi
|
||||||
if [ -z "$name" ]; then
|
if [ -z "$name" ]; then
|
||||||
|
@ -1860,23 +1882,8 @@ function ldumpcsv() {
|
||||||
local -a fields
|
local -a fields
|
||||||
fields=("$@")
|
fields=("$@")
|
||||||
|
|
||||||
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 '
|
awkcsv "${args[@]}" -v show_headers:int="$show_headers" -v hname="$hname" -v name="$name" -v dump="$dump" -v reset_values:int="$reset" -v fields[@] -e '
|
||||||
function init_fields() {
|
function dump_values(name, values, dump) {
|
||||||
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") {
|
if (dump == "function") {
|
||||||
print qarr(values, name)
|
print qarr(values, name)
|
||||||
} else if (dump == "array") {
|
} else if (dump == "array") {
|
||||||
|
@ -1884,6 +1891,27 @@ function dump_values(name, values) {
|
||||||
} else if (dump == "array-function") {
|
} else if (dump == "array-function") {
|
||||||
print "values=(" qarr(values) ")"
|
print "values=(" qarr(values) ")"
|
||||||
print name
|
print name
|
||||||
|
} else if (dump == "var") {
|
||||||
|
i = 1
|
||||||
|
while (i <= fields_count) {
|
||||||
|
print fields[i] "=" qval(values[i])
|
||||||
|
i++
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
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, dump == "var"? "array": dump)
|
||||||
|
}
|
||||||
|
if ((dump == "array" || dump == "var") && reset_values) {
|
||||||
|
array_new(reset)
|
||||||
|
dump_values(name, reset, dump)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
|
@ -1894,7 +1922,7 @@ function dump_values(name, values) {
|
||||||
values[i] = get(fields[i])
|
values[i] = get(fields[i])
|
||||||
i++
|
i++
|
||||||
}
|
}
|
||||||
dump_values(name, values)
|
dump_values(name, values, dump)
|
||||||
}
|
}
|
||||||
END {
|
END {
|
||||||
init_fields()
|
init_fields()
|
||||||
|
|
Loading…
Reference in New Issue