implémenter printcsv
This commit is contained in:
parent
383410a451
commit
af183325fe
58
lib/ulib/awk
58
lib/ulib/awk
|
@ -72,7 +72,7 @@ sqvals(s)
|
||||||
print \"mycmd\" sqvals()
|
print \"mycmd\" sqvals()
|
||||||
L'alias qsvals(s) existe pour compatibilité
|
L'alias qsvals(s) existe pour compatibilité
|
||||||
|
|
||||||
qarr(vs, prefix)
|
qarr(vs[, prefix])
|
||||||
quoter les valeurs du tableau vs pour le shell, e.g:
|
quoter les valeurs du tableau vs pour le shell, e.g:
|
||||||
print \"values=(\" qarr(values) \")\"
|
print \"values=(\" qarr(values) \")\"
|
||||||
si prefix est spécifié, il est affiché suivi d'un espace, suivi des valeurs
|
si prefix est spécifié, il est affiché suivi d'un espace, suivi des valeurs
|
||||||
|
@ -1786,7 +1786,6 @@ Afficher les champs spécifiés pour traitement par le shell
|
||||||
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"
|
nom de la fonction, qui vaut 'dump' par défaut"
|
||||||
|
|
||||||
: "${__DUMPCSV_DEBUG:=}"
|
|
||||||
function ldumpcsv() {
|
function ldumpcsv() {
|
||||||
eval "$(utools_local)"
|
eval "$(utools_local)"
|
||||||
local skip= parse_headers=1
|
local skip= parse_headers=1
|
||||||
|
@ -1836,3 +1835,58 @@ function ldumpcsv() {
|
||||||
|
|
||||||
function cdumpcsv() { LANG=C ldumpcsv "$@"; }
|
function cdumpcsv() { LANG=C ldumpcsv "$@"; }
|
||||||
function dumpcsv() { LANG=C ldumpcsv "$@"; }
|
function dumpcsv() { LANG=C ldumpcsv "$@"; }
|
||||||
|
|
||||||
|
################################################################################
|
||||||
|
|
||||||
|
__PRINTCSV_HELP="\
|
||||||
|
Afficher les valeurs spécifiées au format CSV
|
||||||
|
|
||||||
|
-F, --fields FIELDS
|
||||||
|
Spécifier les champs en sortie
|
||||||
|
-o, --output OUTPUT
|
||||||
|
Ajouter la ligne au fichier spécifié. Si le fichier n'existe pas ou est de
|
||||||
|
taille vide, et que l'option -F est spécifiée, alors écrire les en-têtes
|
||||||
|
dans le fichier avant d'écrire les valeurs.
|
||||||
|
--show-headers
|
||||||
|
-n, --no-headers
|
||||||
|
Forcer l'affichage (resp. le non-affichage) des en-têtes"
|
||||||
|
|
||||||
|
function lprintcsv() {
|
||||||
|
eval "$(utools_local)"
|
||||||
|
local fields output show_headers=auto
|
||||||
|
parse_opts "${PRETTYOPTS[@]}" \
|
||||||
|
-F:,--fields: fields= \
|
||||||
|
-o:,--output: output= \
|
||||||
|
-n,--no-headers show_headers= \
|
||||||
|
--show-headers show_headers=1 \
|
||||||
|
@ args -- "$@" && set -- "${args[@]}" || die "$args"
|
||||||
|
|
||||||
|
array_split fields "$fields" ,
|
||||||
|
[ "$output" == - ] && output=
|
||||||
|
[ -n "$fields" ] || show_headers=
|
||||||
|
if [ "$show_headers" == auto ]; then
|
||||||
|
if [ -n "$output" ]; then
|
||||||
|
[ -s "$output" ] || show_headers=1
|
||||||
|
else
|
||||||
|
show_headers=
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
[ -n "$output" ] || output=/dev/stdout
|
||||||
|
values=("$@")
|
||||||
|
|
||||||
|
awkrun -f >>"$output" fields[@] show_headers:int="$show_headers" values[@] '
|
||||||
|
BEGIN {
|
||||||
|
if (show_headers) array_printcsv(fields)
|
||||||
|
if (fields_count > 0) count = fields_count
|
||||||
|
else count = values_count
|
||||||
|
array_new(output)
|
||||||
|
for (i = 1; i <= count; i++) {
|
||||||
|
if (i <= values_count) output[i] = values[i]
|
||||||
|
else output[i] = ""
|
||||||
|
}
|
||||||
|
array_printcsv(output)
|
||||||
|
}'
|
||||||
|
}
|
||||||
|
|
||||||
|
function cprintcsv() { LANG=C lprintcsv "$@"; }
|
||||||
|
function printcsv() { LANG=C lprintcsv "$@"; }
|
||||||
|
|
15
uawk
15
uawk
|
@ -1,7 +1,7 @@
|
||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
# -*- coding: utf-8 mode: sh -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8
|
# -*- coding: utf-8 mode: sh -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8
|
||||||
|
|
||||||
TOOLS=(awkrun awkcsv grepcsv awkfsv2csv mergecsv sortcsv dumpcsv)
|
TOOLS=(awkrun awkcsv grepcsv awkfsv2csv mergecsv sortcsv dumpcsv printcsv)
|
||||||
if [ "$#" -eq 1 -a "$1" == --nutools-makelinks ]; then
|
if [ "$#" -eq 1 -a "$1" == --nutools-makelinks ]; then
|
||||||
# créer les liens
|
# créer les liens
|
||||||
scriptname="$(basename "$0")"
|
scriptname="$(basename "$0")"
|
||||||
|
@ -123,7 +123,7 @@ $__SORTCSV_HELP"
|
||||||
"${prefix}sortcsv" "$@"
|
"${prefix}sortcsv" "$@"
|
||||||
|
|
||||||
elif [ "$tool" == "dumpcsv" ]; then
|
elif [ "$tool" == "dumpcsv" ]; then
|
||||||
[ $# -eq 1 -a "$1" == --help ] && exit_with uecho "$scriptname: afficher les champs d'un fichiers CSV pour traitement par le shell
|
[ $# -eq 1 -a "$1" == --help ] && exit_with uecho "$scriptname: afficher les champs d'un flux CSV pour traitement par le shell
|
||||||
${Clang:+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
|
USAGE
|
||||||
|
@ -133,6 +133,17 @@ $__DUMPCSV_HELP"
|
||||||
|
|
||||||
"${prefix}dumpcsv" "$@"
|
"${prefix}dumpcsv" "$@"
|
||||||
|
|
||||||
|
elif [ "$tool" == "printcsv" ]; then
|
||||||
|
[ $# -eq 1 -a "$1" == --help ] && exit_with uecho "$scriptname: afficher des champs au format CSV
|
||||||
|
${Clang:+note: ce script ne tient pas compte de la locale: il travaille avec LANG=C
|
||||||
|
}
|
||||||
|
USAGE
|
||||||
|
$scriptname [options] values...
|
||||||
|
|
||||||
|
$__PRINTCSV_HELP"
|
||||||
|
|
||||||
|
"${prefix}printcsv" "$@"
|
||||||
|
|
||||||
elif [ -n "$scriptname" ]; then
|
elif [ -n "$scriptname" ]; then
|
||||||
die "$scriptname: nom d'outil invalide"
|
die "$scriptname: nom d'outil invalide"
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue