awkrun: renommer les fonctions quote_*

This commit is contained in:
Jephté Clain 2015-10-09 14:16:40 +04:00
parent 18691c86b9
commit 0eeee20c7a
2 changed files with 67 additions and 18 deletions

View File

@ -28,33 +28,68 @@ pour un tableau values qui contiendra deux valeurs: value1 et value2
Les fonctions suivantes sont définies: Les fonctions suivantes sont définies:
quote_value(s) num(s)
quoter une valeur pour le shell. la valeur est entourée de quotes, e.g: si s ne contient que des chiffres, retourner la valeur numérique associée,
quote_value(\"here, \\\"there\\\" and 'everywhere'.\") sinon retournée la valeur inchangée
--> 'here, \"there\" and '\\''everywhere'\\''.'
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
&amp;, &quot;, &gt; et &lt;
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 quoter les valeurs \$1..\$NF pour les passer comme argument sur la ligne de
commande avec eval. e.g.: 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. 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 quoter une valeur pour l'argument r des fonctions sub() et gsub(). Les
caractères suivants sont mis en échappement: \\ & 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 quoter une valeur pour un pattern *simple* de grep. Les caractères suivants
sont mis en échappement: \\ . [ ^ \$ * 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 quoter une valeur pour un pattern *étendu* de grep. Les caractères suivants
sont mis en échappement: \\ . [ ^ \$ ? + * ( ) | { 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: quoter une valeur pour un script sql. la valeur est entourée de quotes, e.g:
quote_sql(\"hello'there\") quote_sql(\"hello'there\")
--> 'hello''there' --> 'hello''there'
L'alias quote_sql(s) existe pour compatibilité
unquote_mysqlcsv(s) unquote_mysqlcsv(s)
Analyser une valeur exportée de MySQL avec mysqlcsv. Les transformations Analyser une valeur exportée de MySQL avec mysqlcsv. Les transformations

View File

@ -1848,13 +1848,14 @@ function hex(i, s) {
if (length(s) < 2) s = "0" s if (length(s) < 2) s = "0" s
return s return s
} }
function quote_html(s) { function qhtml(s) {
gsub(/&/, "\\&amp;", s) gsub(/&/, "\\&amp;", s)
gsub(/"/, "\\&quot;", s) gsub(/"/, "\\&quot;", s)
gsub(/>/, "\\&gt;", s) gsub(/>/, "\\&gt;", s)
gsub(/</, "\\&lt;", s) gsub(/</, "\\&lt;", s)
return s return s
} }
function quote_html(s) { return qhtml(s) }
function unquote_html(s) { function unquote_html(s) {
gsub(/&lt;/, "<", s) gsub(/&lt;/, "<", s)
gsub(/&gt;/, ">", s) gsub(/&gt;/, ">", s)
@ -1862,11 +1863,15 @@ function unquote_html(s) {
gsub(/&amp;/, "\\&", s) gsub(/&amp;/, "\\&", s)
return s return s
} }
function quote_value(s) {'" function qval(s) {'"
gsub(/'/, \"'\\\\''\", s) gsub(/'/, \"'\\\\''\", s)
return \"'\" 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 = "" line = ""
for (i = 1; i <= NF; i++) { for (i = 1; i <= NF; i++) {
if (i > 1) line = line " " if (i > 1) line = line " "
@ -1874,27 +1879,36 @@ function quoted_values( i, line) {
} }
return line return line
} }
function quote_regexp(s) { function quoted_values() { return qvals() }
function qsvals() {
return " " qvals()
}
function qregexp(s) {
gsub(/[[\\.^$*+?()|{]/, "\\\\&", s) gsub(/[[\\.^$*+?()|{]/, "\\\\&", s)
return s return s
} }
function quote_subrepl(s) { function quote_regexp(s) { return qregexp(s) }
function qsubrepl(s) {
gsub(/\\/, "\\\\", s) gsub(/\\/, "\\\\", s)
gsub(/&/, "\\\\&", s) gsub(/&/, "\\\\&", s)
return s return s
} }
function quote_grep(s) { function quote_subrepl(s) { return qsubrepl(s) }
function qgrep(s) {
gsub(/[[\\.^$*]/, "\\\\&", s) gsub(/[[\\.^$*]/, "\\\\&", s)
return s return s
} }
function quote_egrep(s) { function quote_grep(s) { return qgrep(s) }
function qegrep(s) {
gsub(/[[\\.^$*+?()|{]/, "\\\\&", s) gsub(/[[\\.^$*+?()|{]/, "\\\\&", s)
return s return s
} }
function quote_sql(s) {'" function quote_egrep(s) { return qegrep(s) }
function qsql(s) {'"
gsub(/'/, \"''\", s) gsub(/'/, \"''\", s)
return \"'\" s \"'\" return \"'\" s \"'\"
"'} "'}
function quote_sql(s) { return qsql(s) }
function unquote_mysqlcsv(s) { function unquote_mysqlcsv(s) {
gsub(/\\n/, "\n", s) gsub(/\\n/, "\n", s)
gsub(/\\t/, "\t", s) gsub(/\\t/, "\t", s)