|
How to do things AI Noob vs. Pro
List biggest files Free Open Source: Swiss File Knifea command line
Depeche View
command line
free external tools,
cpp sources
articles |
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.
example:
--- file filt.bat begin ---
sfk script "%~f0" -from begin %*
GOTO end
sfk label begin
+filter %1 %2
+end
:end
--- 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]_"
- allowed variable names:
must start with a-z, then a-z0-9_
to use variable contents by a hash pattern #(name),
option -var must be given. this can be done locally
at the command, or globally directly after sfk:
sfk -var setvar a=foo +echo "using #(a)"
when creating a sfk script batch file by
sfk batch myfile.bat
this starts with "sfk -var" by default, as hash patterns
are mainly used in longer scripts.
examples:
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]
sfk predefined variables
#(sys.slash) produces \ under windows, / under linux.
#(sys.sfkver) current sfk version.
#(sys.numcols) number of console columns.
#(sys.ownscript.name) filename of current script.
to get the text of the current script, use for example:
sfk ... +getvar sys.ownscript.text +filter ...
environment variable access
can be done like #(env.varname). varname is case
insensitive under windows and uses case on linux.
example:
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 addtovar append text lines to an SFK variable
sfk incvar increment a numeric variable
sfk decvar decrement a numeric variable
sfk getvar get SFK or environment variable
sfk variable output formatting
formal syntax:
#(-03.4varname)
with possible control characters:
- format left justified, else right
0 fill with zeros, else with blanks
.4 take up to 4 chars from variable
example: if variable i contains "1" then
command output
+echo -var ">#(i)<" >1<
+echo -var ">#(3i)<" > 1<
+echo -var ">#(-3i)<" >1 <
+echo -var ">#(03i)<" >001<
example: if variable s contains "abcde" then
command output
+echo -var ">#(.3s)<" >abc<
+echo -var ">#(5.3s)<" > abc<
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.
0=first char, -1=not found
strpos(v,-case 'text') same, case sensitive (fast)
strpos(v,myvar) get index of text from myvar
within text of variable v.
strpos(v,-spat '\x20') search using slash patterns
strrpos(v,'text') search from right side
contains(v,'text') tells 1 if text is found in v,
else 0. accepts -case and -spat
contains(v,-case a) tells if text from variable a
is contained within v using
fast case sensitive search
begins(v,'word') check if string starts with word.
returns 1 (yes) or 0 (no).
ends(v,'word') check if string ends with word.
returns 1 (yes) or 0 (no).
substr(v,o[,l]) substring from offset o length l
which can be variables themselves.
offset 0 is first char. negative o
starts from right side minus o.
rsubstr(v,o[,l]) substring from right side taking
up to l chars in left direction.
[l/r]trim(v) strip whitespace at sides
isset(v) tells 1 if v is set, else 0
isempty(v) tells 1 if not set or empty
size(v) number of bytes in v
strlen(v) number of characters in v,
if it contains just plain text
numlines(v) number of lines in v
example: if variable s contains "foo bar" then
command output
+echo -var "#(substr(a,4,3))" bar
+echo -var "#(strpos(a,'bar'))" 4
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.
example:
--- file filt.bat begin ---
sfk script "%~f0" -from begin %*
GOTO end
sfk label begin
+filter %1 %2
+end
:end
--- 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]_"
- allowed variable names:
must start with a-z, then a-z0-9_
to use variable contents by a hash
pattern #(name), option -var must be
given. this can be done locally at the
command, or globally directly after sfk:
sfk -var setvar a=foo +echo "using
#(a)"
when creating a sfk script batch file by
sfk batch myfile.bat
this starts with "sfk -var" by default,
as hash patterns
are mainly used in longer scripts.
examples:
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]
sfk predefined variables
#(sys.slash) produces \ under
windows, / under linux.
#(sys.sfkver) current sfk version.
#(sys.numcols) number of console
columns.
#(sys.ownscript.name) filename of
current script.
to get the text of the current script,
use for example: sfk ... +getvar sys.
ownscript.text +filter ...
environment variable access
can be done like #(env.varname). varname
is case insensitive under windows and
uses case on linux.
example:
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 addtovar append text lines to an
SFK variable
sfk incvar increment a numeric
variable
sfk decvar decrement a numeric
variable
sfk getvar get SFK or environment
variable
sfk variable output formatting
formal syntax:
#(-03.4varname)
with possible control characters:
- format left justified, else right
0 fill with zeros, else with blanks
.4 take up to 4 chars from variable
example: if variable i contains "1"
then
command output
+echo -var ">#(i)<"
>1<
+echo -var ">#(3i)<"
> 1<
+echo -var ">#(-3i)<"
>1 <
+echo -var ">#(03i)<"
>001<
example: if variable s contains "abcde"
then
command output
+echo -var ">#(.3s)<"
>abc<
+echo -var ">#(5.3s)<" >
abc<
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.
0=first char,
-1=not found
strpos(v,-case 'text') same, case
sensitive (fast)
strpos(v,myvar) get index of
text from myvar
within text of
variable v.
strpos(v,-spat '\x20') search using
slash patterns
strrpos(v,'text') search from
right side
contains(v,'text') tells 1 if
text is found in v,
else 0. accepts
-case and -spat
contains(v,-case a) tells if text
from variable a
is contained
within v using
fast case
sensitive search
begins(v,'word') check if
string starts with
word.
returns 1 (yes)
or 0 (no).
ends(v,'word') check if
string ends with word.
returns 1 (yes)
or 0 (no).
substr(v,o[,l]) substring from
offset o length
l which can be
variables
themselves.
offset 0 is
first char.
negative o
starts from
right side minus
o.
rsubstr(v,o[,l]) substring from
right side
taking up to l
chars in left
direction.
[l/r]trim(v) strip
whitespace at sides
isset(v) tells 1 if v
is set, else 0
isempty(v) tells 1 if not
set or empty
size(v) number of
bytes in v
strlen(v) number of
characters in v,
if it contains
just plain text
numlines(v) number of
lines in v
example: if variable s contains "foo
bar" then
command
output
+echo -var "#(substr(a,4,3))" bar
+echo -var "#(strpos(a,'bar'))" 4
you are viewing this page in mobile portrait mode with a limited layout. turn your device right, use a desktop browser or buy the sfk e-book for improved reading. sfk is a free open-source tool, running instantly without installation efforts. no DLL's, no registry changes - just get sfk.exe from the zip package and use it (binaries for windows, linux and mac are included).
|


