Table of Contents
parsestringarrayidx
Table of Contents
Prototype: parsestringarrayidx(array, input, comment, split, maxentries, maxbytes)
Return type: int
Description: Populates the two-dimensional array array with up to
maxentries fields from the first maxbytes bytes of the string input.
This function mirrors the exact behavior of readstringarrayidx(), but
reads data from a variable instead of a file. By making data readable from a variable, data driven policies can be kept inline.
The comment field is a multiline regular expression and will strip out
unwanted patterns from the file being read, leaving unstripped characters to be
split into fields. Using the empty string ("") indicates no comments.
Arguments:
array:string, in the range:[a-zA-Z0-9_$(){}\[\].:]+input:string, in the range:.*comment:string, in the range:.*split:string, in the range:.*maxentries:int, in the range:0,99999999999maxbytes:int, in the range:0,99999999999
Example:
body common control
{
bundlesequence => { "test" };
}
bundle agent test(f)
{
vars:
# Define data inline for convenience
"table" string => "one: a
two: b
three: c";
#######################################
"dim" int => parsestringarrayidx(
"items",
"$(table)",
"\s*#[^\n]*",
":",
"1000",
"200000"
);
"keys" slist => getindices("items");
"sorted_keys" slist => sort(keys, "int");
reports:
"item $(sorted_keys) has column 0 = $(items[$(sorted_keys)][0]) and column 1 = $(items[$(sorted_keys)][1])";
}
Output:
R: item 0 has column 0 = one and column 1 = a
R: item 1 has column 0 = two and column 1 = b
R: item 2 has column 0 = three and column 1 = c
History: Was introduced in version 3.1.5, Nova 2.1.0 (2011)