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()
|
||||
L'alias qsvals(s) existe pour compatibilité
|
||||
|
||||
qarr(vs, prefix)
|
||||
qarr(vs[, prefix])
|
||||
quoter les valeurs du tableau vs pour le shell, e.g:
|
||||
print \"values=(\" qarr(values) \")\"
|
||||
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
|
||||
nom de la fonction, qui vaut 'dump' par défaut"
|
||||
|
||||
: "${__DUMPCSV_DEBUG:=}"
|
||||
function ldumpcsv() {
|
||||
eval "$(utools_local)"
|
||||
local skip= parse_headers=1
|
||||
|
@ -1836,3 +1835,58 @@ function ldumpcsv() {
|
|||
|
||||
function cdumpcsv() { 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
|
||||
# -*- 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
|
||||
# créer les liens
|
||||
scriptname="$(basename "$0")"
|
||||
|
@ -123,7 +123,7 @@ $__SORTCSV_HELP"
|
|||
"${prefix}sortcsv" "$@"
|
||||
|
||||
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
|
||||
}
|
||||
USAGE
|
||||
|
@ -133,6 +133,17 @@ $__DUMPCSV_HELP"
|
|||
|
||||
"${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
|
||||
die "$scriptname: nom d'outil invalide"
|
||||
|
||||
|
|
Loading…
Reference in New Issue