diff --git a/lib/ulib/awk b/lib/ulib/awk index 3d705cf..15bb948 100644 --- a/lib/ulib/awk +++ b/lib/ulib/awk @@ -28,33 +28,68 @@ pour un tableau values qui contiendra deux valeurs: value1 et value2 Les fonctions suivantes sont définies: -quote_value(s) - quoter une valeur pour le shell. la valeur est entourée de quotes, e.g: - quote_value(\"here, \\\"there\\\" and 'everywhere'.\") - --> 'here, \"there\" and '\\''everywhere'\\''.' +num(s) + si s ne contient que des chiffres, retourner la valeur numérique associée, + sinon retournée la valeur inchangée -quoted_values() +ord(s) + retourner le code ASCII du premier caractère de la chaine s. seuls les codes + de 32 à 127 sont supportés + +hex(i) + retourner la représentation hexadécimale du nombre i + +qhtml(s) + remplacer respectivement dans la chaine s les valeurs &, \", > et < par + &, ", > et < + L'alias quote_html(s) existe pour compatibilité + +unquote_html(s) + faire le contraire de qhtml(s) + +qval(s) + quoter une valeur pour le shell. la valeur est entourée de quotes, e.g: + qval(\"here, \\\"there\\\" and 'everywhere'.\") + --> 'here, \"there\" and '\\''everywhere'\\''.' + L'alias quote_value(s) existe pour compatibilité + +qsval(s) + comme qval() mais ajouter un espace avant la valeur quotée. ceci permet de + construire facilement une ligne de commande, e.g.: + print \"mycmd\" qsval(arg1) qsval(arg2) + +qvals() quoter les valeurs \$1..\$NF pour les passer comme argument sur la ligne de commande avec eval. e.g.: - print \"mycmd \" quoted_values() + print \"mycmd \" qvals() La ligne qui est affichée pourra être évaluée avec eval dans le shell. + L'alias quoted_values(s) existe pour compatibilité -quote_subrepl(s) +qsvals(s) + comme qvals() mais ajouter un espace avant la valeur quotée. ceci permet de + construire facilement une ligne de commande, e.g.: + print \"mycmd\" qsvals() + +qsubrepl(s) quoter une valeur pour l'argument r des fonctions sub() et gsub(). Les caractères suivants sont mis en échappement: \\ & + L'alias quote_subrepl(s) existe pour compatibilité -quote_grep(s) +qgrep(s) quoter une valeur pour un pattern *simple* de grep. Les caractères suivants sont mis en échappement: \\ . [ ^ \$ * + L'alias quote_grep(s) existe pour compatibilité -quote_egrep(s) +qegrep(s) quoter une valeur pour un pattern *étendu* de grep. Les caractères suivants sont mis en échappement: \\ . [ ^ \$ ? + * ( ) | { + L'alias quote_egrep(s) existe pour compatibilité -quote_sql(s) +qsql(s) quoter une valeur pour un script sql. la valeur est entourée de quotes, e.g: quote_sql(\"hello'there\") --> 'hello''there' + L'alias quote_sql(s) existe pour compatibilité unquote_mysqlcsv(s) Analyser une valeur exportée de MySQL avec mysqlcsv. Les transformations diff --git a/lib/ulib/base b/lib/ulib/base index d369ed6..596411f 100644 --- a/lib/ulib/base +++ b/lib/ulib/base @@ -1848,13 +1848,14 @@ function hex(i, s) { if (length(s) < 2) s = "0" s return s } -function quote_html(s) { +function qhtml(s) { gsub(/&/, "\\&", s) gsub(/"/, "\\"", s) gsub(/>/, "\\>", s) gsub(/", s) @@ -1862,11 +1863,15 @@ function unquote_html(s) { gsub(/&/, "\\&", s) return s } -function quote_value(s) {'" +function qval(s) {'" gsub(/'/, \"'\\\\''\", s) return \"'\" s \"'\" "'} -function quoted_values( i, line) { +function quote_value(s) { return qval(s) } +function qsval(s) { + return " " qval(s) +} +function qvals( i, line) { line = "" for (i = 1; i <= NF; i++) { if (i > 1) line = line " " @@ -1874,27 +1879,36 @@ function quoted_values( i, line) { } return line } -function quote_regexp(s) { +function quoted_values() { return qvals() } +function qsvals() { + return " " qvals() +} +function qregexp(s) { gsub(/[[\\.^$*+?()|{]/, "\\\\&", s) return s } -function quote_subrepl(s) { +function quote_regexp(s) { return qregexp(s) } +function qsubrepl(s) { gsub(/\\/, "\\\\", s) gsub(/&/, "\\\\&", s) return s } -function quote_grep(s) { +function quote_subrepl(s) { return qsubrepl(s) } +function qgrep(s) { gsub(/[[\\.^$*]/, "\\\\&", s) return s } -function quote_egrep(s) { +function quote_grep(s) { return qgrep(s) } +function qegrep(s) { gsub(/[[\\.^$*+?()|{]/, "\\\\&", s) return s } -function quote_sql(s) {'" +function quote_egrep(s) { return qegrep(s) } +function qsql(s) {'" gsub(/'/, \"''\", s) return \"'\" s \"'\" "'} +function quote_sql(s) { return qsql(s) } function unquote_mysqlcsv(s) { gsub(/\\n/, "\n", s) gsub(/\\t/, "\t", s)