How to set and read variables in SFK scripts to extract data in one command and reuse it in following commands.

sfk parameters and variables support

sfk script parameters

   -  look like %1 %2 %3 to %9,
      or with sfk for windows also like $1 $2 $3.

   -  are used with sfk script and call / label.

   -  are passed into the script or label command chain
      wherein they are never changed.

web reference

      --- file filt.bat begin ---
      sfk script %~f0 -from begin %*
      GOTO end
      sfk label begin
         +filter %1 %2
      --- file filt.bat end ---
      typing "filt.bat in.txt -+foo" will run sfk filter
      using the parameters "in.txt" and "-+foo".
      under windows %~f0 is the absolute batch filename
      itself including extension .bat or .cmd.

sfk global variables

   -  are set like:
      sfk setvar myvar="the test text" ...
      sfk echo foo +setvar myvar ...
      sfk xed in.txt "/foo*bar/[setvar myvar][part2][endvar]/" ...

   -  are used by further commands in the chain like:
      sfk ... +getvar myvar
      sfk ... +echo -var "using #(myvar)"
      sfk ... +xed "_<foo>*</foo>_[part1][getvar myvar][part3]_"
        to read or use variable contents by a pattern #(name)
        option -var must be given. this is to avoid unwanted
        side effects with commands that get "#(" in their
        input files or input text streams.

   -  allowed variable names:
      must start with a-z, then a-z0-9_

      sfk setvar file=in.txt +filter -var "#(file)" -+foo
         runs sfk filter, giving the input filename by variable.
      sfk xex in.txt "/foo=*/[setvar fooval][part2][endvar]/"
       +echo -var "foo is: #(fooval)"
         extract foo=(any text) from in.txt, place the found
         text into variable fooval, then print it. [19]

environment variable access

   can be done like #(env.varname). varname is case
   insensitive under windows and uses case on linux.

      sfk -var echo "tmp contains: #(env.TMP)"

sfk local command variables

   -  are created directly from input text
      produced by a previous command in the command chain

   -  are suppported only within some commands like
      sfk run "... $text ...."
         runs an external program once for every input line.
      sfk perline "... $text ..."
         runs sfk internal commands once for every input line.
      sfk filter -tabform "... $col1 ... $col2 ..."
         splits text lines by TAB char, allowing reformatting.
      type sfk run, sfk perline etc. for further infos.

see also
   sfk setvar   set an SFK variable
   sfk getvar   get SFK or environment variable

sfk variable functions

   when reading variable text like #(varname) some extra
   functions can be applied using #(func(varname,...)).
   available functions are:

   strpos(v,'text')        get index of text within v
   strpos(v,-case 'text')  same, case sensitive
   strpos(v,-spat '\x20')  using slash patterns
   strrpos(v,'text')       search from right side
   substr(v,o[,l])         substring from offset o length l.
                           use negative o from right side.
   [l/r]trim(v)            strip whitespace at sides
   lpad(v,n)               fill left side up to n chars
   rpad(v,n)               fill right side up to n chars
   isset(v)                tells 1 if v is set, else 0
   strlen(v)               number of characters in v

   sfk -var setvar a="foo bar"
      +echo "#(substr(a,4,3))"    - prints 'bar'
      +echo "#(strpos(a,'bar'))"  - prints '4'
   sfk -var setvar a="foo"
      +echo "#(lpad(a,6))"        - prints '   foo'