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.

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,99999999999
  • maxbytes: 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)