trimmer les valeurs par défaut

This commit is contained in:
Jephté Clain 2014-01-21 12:18:59 +04:00
parent 70dba190ea
commit 284db6fa5b
2 changed files with 17 additions and 14 deletions

12
uawk
View File

@ -12,9 +12,7 @@ if [ "$#" -eq 1 -a "$1" == --nutools-makelinks ]; then
exit 0 exit 0
fi fi
source "$(dirname "$0")/ulib/ulib" && source "$(dirname "$0")/ulib/ulib" || exit 1; urequire DEFAULTS awk
urequire DEFAULTS awk ||
exit 1
# si on lance le script uawk, donner la possibilité de choisir l'outil # si on lance le script uawk, donner la possibilité de choisir l'outil
if [ "$scriptname" == uawk ] && array_contains ALIASES "${1#l}"; then if [ "$scriptname" == uawk ] && array_contains ALIASES "${1#l}"; then
@ -31,7 +29,7 @@ else
Clang=1 Clang=1
fi fi
if [ "$scriptname" == "awkcsv" ]; then if [ "${scriptname#l}" == "awkcsv" ]; then
[ $# -eq 1 -a "$1" == --help ] && exit_with uecho "$scriptname: wrapper autour de awk pour traiter des fichier csv [ $# -eq 1 -a "$1" == --help ] && exit_with uecho "$scriptname: wrapper autour de awk pour traiter des fichier csv
${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
} }
@ -42,7 +40,7 @@ $__AWKCSV_HELP"
"${prefix}awkcsv" "$@" "${prefix}awkcsv" "$@"
elif [ "$scriptname" == "awkfsv2csv" ]; then elif [ "${scriptname#l}" == "awkfsv2csv" ]; then
[ $# -eq 1 -a "$1" == --help ] && exit_with uecho "$scriptname: wrapper autour de awk pour transformer un fichier à colonnes fixes en fichier csv [ $# -eq 1 -a "$1" == --help ] && exit_with uecho "$scriptname: wrapper autour de awk pour transformer un fichier à colonnes fixes en fichier csv
${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
} }
@ -53,7 +51,7 @@ $__AWKFSV2CSV_HELP"
"${prefix}awkfsv2csv" "$@" "${prefix}awkfsv2csv" "$@"
elif [ "$scriptname" == "mergecsv" ]; then elif [ "${scriptname#l}" == "mergecsv" ]; then
[ $# -eq 1 -a "$1" == --help ] && exit_with uecho "$scriptname: fusionner deux fichiers csv sur un champ commun [ $# -eq 1 -a "$1" == --help ] && exit_with uecho "$scriptname: fusionner deux fichiers csv sur un champ commun
${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
} }
@ -64,7 +62,7 @@ $__MERGECSV_HELP"
"${prefix}mergecsv" "$@" "${prefix}mergecsv" "$@"
elif [ "$scriptname" == "sortcsv" ]; then elif [ "${scriptname#l}" == "sortcsv" ]; then
[ $# -eq 1 -a "$1" == --help ] && exit_with uecho "$scriptname: trier un fichier csv sur un champ [ $# -eq 1 -a "$1" == --help ] && exit_with uecho "$scriptname: trier un fichier csv sur un champ
${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
} }

View File

@ -764,12 +764,14 @@ function awkcsv() { LANG=C lawkcsv "$@"; }
__AWKFSV2CSV_HELP="\ __AWKFSV2CSV_HELP="\
Transformer un flux fsv (colonnes à largeurs fixes) en csv Transformer un flux fsv (colonnes à largeurs fixes) en csv
Chaque argument doit être de la forme [-]header:size. La colonne sera incluse
dans le fichier en sortie, sauf si elle est précédée de -
Analyse du flux en entrée: Analyse du flux en entrée:
-s, --skip-lines nblines -s, --skip-lines nblines
Sauter nblines au début du flux Sauter nblines au début du flux
-r, --no-trim
Chaque argument doit être de la forme [-]header:size. La colonne sera incluse Ne pas trimmer les valeurs à droite.
dans le fichier en sortie, sauf si elle est précédée de -
Flux en sortie: Flux en sortie:
-n, --no-headers -n, --no-headers
@ -777,9 +779,10 @@ Flux en sortie:
function lawkfsv2csv() { function lawkfsv2csv() {
local -a args headersizes local -a args headersizes
local skip_lines=0 show_headers=1 local skip_lines=0 trim_values=1 show_headers=1
if parse_opts \ if parse_opts \
-s:,--skip-lines: skip_lines= \ -s:,--skip-lines: skip_lines= \
-r,--no-trim trim_values= \
-n,--no-headers show_headers= \ -n,--no-headers show_headers= \
--show-headers show_headers=1 \ --show-headers show_headers=1 \
@ args -- "$@"; then @ args -- "$@"; then
@ -812,7 +815,7 @@ function lawkfsv2csv() {
shift shift
awkrun -f \ awkrun -f \
skip_lines:int="$skip_lines" show_headers:int="$show_headers" \ skip_lines:int="$skip_lines" trim_values:int="$trim_values" show_headers:int="$show_headers" \
headers[@] starts[@] sizes[@] \ headers[@] starts[@] sizes[@] \
"$__AWKCSV_FUNCTIONS"' "$__AWKCSV_FUNCTIONS"'
BEGIN { BEGIN {
@ -824,8 +827,10 @@ NR <= skip_lines { next }
{ {
line = $0 line = $0
$0 = "" $0 = ""
for (i=1; i <= headers_count; i++) { for (i = 1; i <= headers_count; i++) {
$i = substr(line, starts[i], sizes[i]) value = substr(line, starts[i], sizes[i])
if (trim_values) sub(/ *$/, "", value)
$i = value
} }
formatcsv() formatcsv()
print print