ajout de defval aux commande de transformation de ldif
This commit is contained in:
parent
3b9c9f7ec8
commit
f724bffe82
|
@ -1 +1 @@
|
|||
007018000
|
||||
007019000
|
||||
|
|
148
lib/ulib/ldif
148
lib/ulib/ldif
|
@ -457,6 +457,51 @@ END {
|
|||
awk "$script"
|
||||
}
|
||||
|
||||
function tl_defval() {
|
||||
local attr="$1"; shift
|
||||
local script="$(def_match_attr "$attr")
|
||||
function resetp() {
|
||||
add = 0
|
||||
found = 0
|
||||
}
|
||||
function print_values() {
|
||||
for (i = 0; i < count; i++) {
|
||||
print attr \" \" values[i]
|
||||
}
|
||||
resetp()
|
||||
}
|
||||
BEGIN {
|
||||
add = 0
|
||||
found = 0
|
||||
attr = fix_attr($(quoted_awk "$attr"))
|
||||
count = $#"
|
||||
local i value
|
||||
let i=0
|
||||
for value in "$@"; do
|
||||
script="$script
|
||||
values[$i] = $(quoted_awk "$value")"
|
||||
let i=$i+1
|
||||
done
|
||||
script="$script
|
||||
}"'
|
||||
/^dn:/ {
|
||||
add = 1
|
||||
}
|
||||
add && match_attr($1) {
|
||||
found = 1
|
||||
}
|
||||
add && $0 == "" {
|
||||
if (!found) print_values()
|
||||
resetp()
|
||||
}
|
||||
{ print }
|
||||
END {
|
||||
if (add && !found) print_values()
|
||||
}
|
||||
'
|
||||
awk "$script"
|
||||
}
|
||||
|
||||
function tl_decode() {
|
||||
local match_attr="$1"
|
||||
awkrun -f "$match_attr"'
|
||||
|
@ -853,45 +898,48 @@ u, uncut
|
|||
c, cut
|
||||
Couper les lignes trop longues. Il n'est pas conseillé d'appliquer des
|
||||
méthodes de transformation après avoir utilisé cette action.
|
||||
dec, decode [attrs...]
|
||||
dec, decode [ATTRS...]
|
||||
Décoder les valeurs des attributs mentionnés si nécessaire (c'est à dire
|
||||
s'ils sont encodés en base64)
|
||||
enc, encode [attrs...]
|
||||
enc, encode [ATTRS...]
|
||||
Encoder en base64 les valeurs des attributs mentionnés.
|
||||
k, keepattr attrs...
|
||||
k, keepattr ATTRS...
|
||||
Garder uniquement les lignes des attributs mentionnés. Ensuite, supprimer
|
||||
les objets ayant uniquement la ligne dn: (en d'autres termes, keepattr sans
|
||||
argument supprime *tout* le flux)
|
||||
kv, keepval attr patterns...
|
||||
kv, keepval ATTR PATTERNS...
|
||||
Pour l'attribut attr, garder uniquement les lignes pour lesquelles les
|
||||
valeurs correspondent aux expressions régulières. Les autres attributs ne
|
||||
sont pas modifiés. Ensuite, supprimer les objets ayant uniquement la ligne
|
||||
dn:
|
||||
x, excludeattr attrs...
|
||||
x, excludeattr ATTRS...
|
||||
Supprimer les lignes des attributs mentionnés. Ensuite, supprimer les objets
|
||||
ayant uniquement la ligne dn:
|
||||
xv, excludeval attr patterns...
|
||||
xv, excludeval ATTR PATTERNS...
|
||||
Pour l'attribut attr, supprimer les lignes pour lesquelles les valeurs
|
||||
correspondent aux expressions régulières. Les autres attributs ne sont pas
|
||||
modifiés. Ensuite, supprimer les objets ayant uniquement la ligne dn:
|
||||
kve, keepvalentry attr patterns...
|
||||
kve, keepvalentry ATTR PATTERNS...
|
||||
Pour l'attribut attr, vérifier si *au moins une* valeur correspond à l'une
|
||||
des expressions régulières. Si c'est le cas, garder toute l'entrée, sinon
|
||||
supprimer toute l'entrée.
|
||||
xve, excludevalentry attr patterns...
|
||||
xve, excludevalentry ATTR PATTERNS...
|
||||
Pour l'attribut attr, vérifier si *aucune* des valeurs ne correspond à l'une
|
||||
des expressions régulières. Si c'est le cas, garder toute l'entrée, sinon
|
||||
supprimer toute l'entrée.
|
||||
rv, replval attr values...
|
||||
rv, replval ATTR VALUES...
|
||||
Remplacer toutes les valeurs de l'attribut attr par les valeurs spécifiées.
|
||||
av, addval attr values...
|
||||
av, addval ATTR VALUES...
|
||||
Ajouter un nouvel attribut avec les valeurs spécifiées. Si l'attribut existe
|
||||
déjà, les nouvelles valeurs sont ajoutées à la fin.
|
||||
sed args
|
||||
awk args
|
||||
grep args
|
||||
sort [args]
|
||||
awkrun [args]
|
||||
dv, defval ATTR VALUES...
|
||||
Ajouter un nouvel attribut avec les valeurs spécifiées, s'il n'existe pas
|
||||
déjà. Si l'attribut existe déjà, cette opération est un NOP.
|
||||
sed ARGS
|
||||
awk ARGS
|
||||
grep ARGS
|
||||
sort [ARGS]
|
||||
awkrun [ARGS]
|
||||
Traiter le flux avec respectivement les commandes sed, awk, grep, sort et
|
||||
awkrun. awkrun est la version 'améliorée' de awk offerte par nutools.
|
||||
Note: ces commandes ne tiennent pas compte de la locale: elles sont lancées
|
||||
|
@ -899,7 +947,7 @@ awkrun [args]
|
|||
Note: aucun argument n'est filtré, mais il ne faudrait pas utiliser les
|
||||
options qui provoquent la modification en place d'un fichier, comme par
|
||||
exemple l'option -i de sed
|
||||
format [options] attrs...
|
||||
format [OPTIONS] ATTRS...
|
||||
Formater le flux au format ldif en données tabulaires.
|
||||
Chaque attribut peut être de la forme newname:oldname pour avoir des
|
||||
en-têtes avec un nom différent des noms des attributs. L'effet est le même
|
||||
|
@ -951,7 +999,7 @@ format [options] attrs...
|
|||
--ec
|
||||
Dans le mode -e, spécifier une commande à insérer après le dernier
|
||||
enregistrement
|
||||
formatcsv [options] attrs...
|
||||
formatcsv [OPTIONS] ATTRS...
|
||||
Equivalent à 'format -F , --show-headers --quote \\\"'
|
||||
-n, --no-headers
|
||||
Ne pas afficher les en-têtes. Par défaut, les en-têtes sont affichés.
|
||||
|
@ -959,16 +1007,16 @@ formatcsv [options] attrs...
|
|||
--quote QUOTE
|
||||
--escape ESCAPE
|
||||
Ces options ont la même signification que pour format
|
||||
parsecsv [options] basedn [attrs...]
|
||||
parsecsv [OPTIONS] BASEDN [ATTRS...]
|
||||
Analyser le flux au format CSV (qui a par exemple été générée avec la
|
||||
commande formatcsv), et reconstruire les objets LDAP associés.
|
||||
|
||||
En principe, basedn n'est pas vide, et l'option -u détermine l'attribut dont
|
||||
la valeur est utilisée pour nommer les objets. Le cas particulier basedn==''
|
||||
En principe, BASEDN n'est pas vide, et l'option -u détermine l'attribut dont
|
||||
la valeur est utilisée pour nommer les objets. Le cas particulier BASEDN==''
|
||||
est aussi supporté, auquel cas la valeur par défaut de rdnattr n'est plus
|
||||
'uid' mais 'dn'
|
||||
|
||||
basedn
|
||||
BASEDN
|
||||
DN de base des objets à construire
|
||||
-u, --rdnattr rdnattr[=uid]
|
||||
Nommer les objets avec la valeur de l'attribut spécifié
|
||||
|
@ -981,20 +1029,20 @@ parsecsv [options] basedn [attrs...]
|
|||
-R VSEP
|
||||
Spécifier le séparateur pour les valeurs des attributs. Par défaut, il
|
||||
s'agit du point-virgule ';'
|
||||
parsecsvmod [options] basedn [attrs...]
|
||||
parsecsvmod [OPTIONS] BASEDN [ATTRS...]
|
||||
Analyser le flux au format CSV qui contient des ordres de modification des
|
||||
objets LDAP, et construire les modifications au format LDIF.
|
||||
L'attribut rdnattr est le seul dont la valeur doit être au format standard.
|
||||
Les valeurs des autres attributs doivent être de la forme [CHANGETYPE:]value
|
||||
où CHANGETYPE peut valoir replace (par défaut), add, delete. Si une valeur
|
||||
est vide, elle est ignorée
|
||||
|
||||
En principe, basedn n'est pas vide, et l'option -u détermine l'attribut dont
|
||||
L'attribut rdnattr (spécifié avec l'option -u) est le seul dont la valeur
|
||||
doit être au format standard. Les valeurs des autres attributs doivent être
|
||||
de la forme [CHANGETYPE:]value où CHANGETYPE peut valoir replace, add, ou
|
||||
delete. CHANGETYPE vaut replace par défaut. Si une valeur est vide, elle est
|
||||
ignorée
|
||||
En principe, BASEDN n'est pas vide, et l'option -u détermine l'attribut dont
|
||||
la valeur est utilisée pour nommer les objets. Le cas particulier basedn==''
|
||||
est aussi supporté, auquel cas la valeur par défaut de rdnattr n'est plus
|
||||
'uid' mais 'dn'
|
||||
|
||||
basedn
|
||||
BASEDN
|
||||
DN de base des objets à construire
|
||||
-u, --rdnattr rdnattr[=uid]
|
||||
Nommer les objets avec la valeur de l'attribut spécifié
|
||||
|
@ -1007,35 +1055,35 @@ parsecsvmod [options] basedn [attrs...]
|
|||
-R VSEP
|
||||
Spécifier le séparateur pour les valeurs des attributs. Par défaut, il
|
||||
s'agit du point-virgule ';'
|
||||
awkcsv [options] [attrs...]
|
||||
awkcsv [OPTIONS] [ATTRS...]
|
||||
$(sed 's/^/ /g' <<<"$__AWKCSV_HELP")
|
||||
mergecsv [options] left right -k field
|
||||
mergecsv [OPTIONS] LEFT RIGHT -k FIELD
|
||||
$(sed 's/^/ /g' <<<"$__MERGECSV_HELP")
|
||||
sortcsv [options] input -k field
|
||||
sortcsv [OPTIONS] INPUT -k FIELD
|
||||
$(sed 's/^/ /g' <<<"$__SORTCSV_HELP")
|
||||
|
||||
lsed args
|
||||
lawk args
|
||||
lgrep args
|
||||
lsort [args]
|
||||
lawkrun [args]
|
||||
lawkcsv [options] [attrs...]
|
||||
lmergecsv [options] left right -k field
|
||||
lsortcsv [options] input -k field
|
||||
lsed ARGS
|
||||
lawk ARGS
|
||||
lgrep ARGS
|
||||
lsort [ARGS]
|
||||
lawkrun [ARGS]
|
||||
lawkcsv [OPTIONS] [ATTRS...]
|
||||
lmergecsv [OPTIONS] LEFT RIGHT -k FIELD
|
||||
lsortcsv [OPTIONS] INPUT -k FIELD
|
||||
Ces commandes sont comme les commandes sans le préfixe 'l', mais elles sont
|
||||
lancées sans LANG=C, ce qui fait qu'elle tiennent compte de la locale.
|
||||
En effet, les outils de coreutils utilisent les règles de la locale pour le
|
||||
tri et la comparaison des chaines, et par exemple, avec LANG=fr_FR.UTF-8, la
|
||||
locale indique que les ponctuations doivent être ignorées pour le tri, ce
|
||||
qui peut poser problème.
|
||||
csed args
|
||||
cawk args
|
||||
cgrep args
|
||||
csort [args]
|
||||
cawkrun [args]
|
||||
cawkcsv [options] [attrs...]
|
||||
cmergecsv [options] left right -k field
|
||||
csortcsv [options] input -k field
|
||||
csed ARGS
|
||||
cawk ARGS
|
||||
cgrep ARGS
|
||||
csort [ARGS]
|
||||
cawkrun [ARGS]
|
||||
cawkcsv [OPTIONS] [ATTRS...]
|
||||
cmergecsv [OPTIONS] LEFT RIGHT -k FIELD
|
||||
csortcsv [OPTIONS] INPUT -k FIELD
|
||||
Ces commandes existent pour compatibilité. Ces commandes sont des aliases
|
||||
des commandes sans le préfixe 'c', et existent pour insister sur le fait
|
||||
qu'elles sont lancées avec LANG=C.
|
||||
|
@ -1149,6 +1197,10 @@ function get_transform_cmd() {
|
|||
cmdparts=(tl_addval "$@")
|
||||
xempty=1
|
||||
;;
|
||||
dv|defval)
|
||||
cmdparts=(tl_defval "$@")
|
||||
xempty=1
|
||||
;;
|
||||
xe|xempty|excludeempty) cmdparts=(ensure_complete_objects);;
|
||||
sed|awk|grep|sort) cmdparts=(LANG=C "$cmd" "$@");;
|
||||
csed|cawk|cgrep|csort) cmdparts=(LANG=C "${cmd#c}" "$@");;
|
||||
|
|
Loading…
Reference in New Issue