Man page - mawk-code(7)
Packages contains this manual
Manual
MAWK-CODE
NAMESYNOPSIS
PROGRAM CODES
a_cat
a_del
a_length
a_pusha
a_test
add
add_asg
ae_pusha
ae_pushi
aloop
assign
atan2
call
cat
close
cos
del_a
div
div_asg
eq
exit
exit0
exp
f_add_asg
f_assign
f_div_asg
f_mod_asg
f_mul_asg
f_post_dec
f_post_inc
f_pow_asg
f_pre_dec
f_pre_inc
f_pusha
f_pushi
f_sub_asg
fe_pusha
fe_pushi
fflush
gt
gte
index
int
jmain
jmp
jnz
jz
l_pusha
l_pushi
la_pusha
lae_pusha
lae_pushi
length
ljnz
ljz
log
lt
lte
match0
match1
match2
mktime
mod
mod_asg
mul
mul_asg
neq
next
nextfile
nf_pushi
not
ol_gl
ol_gl_nr
omain
pop
pop_al
post_dec
post_inc
pow
pow_asg
pre_dec
pre_inc
pusha
pushc
pushd
pushi
pushint
pushs
rand
range
ret
ret0
set_al
sin
sprintf
sqrt
srand
stop
strftime
sub
sub_asg
substr
system
systime
test
tolower
toupper
uminus
uplus
REGULAR EXPRESSIONS
M_1J
M_2JA
M_2JB
M_2JC
M_ACCEPT
M_ANY
M_CLASS
M_END
M_ENTER
M_LOOP
M_SAVE_POS
M_START
M_STR
M_U
NAME
mawk-code - dumping mawk’s byte-code
SYNOPSIS
At startup, mawk compiles the script into byte-code. After that, it interprets the compiled byte-code. Use the -Wdump option to show the byte-code.
PROGRAM CODES
As mawk executes the program, it maintains a reference to the command to execute in cdp . After that there may be data and/or references in cdp [0], cdp [1], etc.
When an operation requires operands, mawk pushes the values (or array/string references) onto the stack, which updates the stack pointer sp . When the operation completes, mawk consumes those entries on the stack, pushing the result (if any) onto the stack.
While executing user-defined functions, mawk maintains a frame pointer fp to address the function’s local variables.
a_cat
Concatenate array-indices .
Usage:
Forms a multiple array index by concatenating the elements of sp [1- cnt ..0], with each element separated by SUBSEP .
Parameters:
cdp[0]
cnt , the number of elements to concatenate follows the command.
sp[0]..sp[1- cnt ]
hold reference to the elements to concatenate.
Returns the index in sp[0].
a_del
Delete an array item .
Usage:
delete array[expr]
Parameters:
sp[0]
points to array
sp[-1]
is an expr
a_length
Find the length of an array .
Usage:
length(array)
Parameters:
sp[0]
points to array .
Returns the length of the array in sp[0].
a_pusha
Push array address onto stack .
Usage:
This is used to set up a calling argument for a function.
Parameters:
cdp[0]
array reference follows the command.
Returns the array in sp[0].
a_test
Test if an expression is present in an array .
Usage:
(expression in array)
Parameters:
sp[0]
points to an array .
sp[-1]
is an expression .
Returns 1 in sp[0] if the expression is found, 0 otherwise.
add
Add two numbers .
Usage:
first + second
Parameters:
sp[0]
holds the second value.
sp[-1]
holds the first value.
Returns the sum in sp[0].
add_asg
Combined addition/assignment .
Usage:
target += source
Parameters:
sp[0]
is the source expression
sp[-1]
points to the target
Stores the sum in the target , leaving sp[0] pointing to the target .
ae_pusha
Push reference to array cell, given expression for its index .
Usage:
arrayname [ expression ]
Parameters:
cdp[0]
an array reference follows the command.
sp[0]
has an expression, used for the index of a cell in the array.
Returns a reference to the addressed cell in sp[0].
ae_pushi
Push contents of array cell, given expression for its index .
Usage:
arrayname [ expression ]
Parameters:
sp[0]
has an expression, used for the index of a cell in the array.
Returns contents of the addressed cell in sp[0].
aloop
Update reference to next cell for array loop .
Usage:
for ( i in arrayname ) statement
Parameters:
|
none |
Mawk maintains a stack of array-loop state. It updates the array/cell references in the current loop’s state.
assign
Assigns a value .
Usage:
target = source
Parameters:
sp[0]
is the source expression
sp[-1]
points to the target
Stores the sum in the target , leaving sp[0] pointing to the target .
atan2
Compute arc-tangent of two values .
Usage:
atan2( first , second )
Parameters:
sp[0]
holds the second value
sp[-1]
holds the first value
Returns the result in sp[0].
call
Call a function .
Usage:
function ()
Parameters:
cdp[0]
is a reference to the function block
cdp[1]
holds number of input arguments
Returns function value in sp[0].
cat
Concatenate two strings .
Usage:
first second
Parameters:
sp[0]
is the second string.
sp[-1]
is the first string.
Returns the result in sp[0].
close
Close the file or pipe associated with an expression .
Usage:
close( expression )
Parameters:
sp[0]
holds the expression identifying the file to close
Returns the status from closing the file, 0 on success or -1 on failure.
cos
Compute the cosine of a value in radians .
Usage:
cos( value )
Parameters:
sp[0]
is the value .
Returns the result in sp[0].
del_a
Delete an array .
Usage:
delete(array)
Parameters:
sp[0]
is the array to delete.
div
Divide one number by another .
Usage:
first / second
Parameters:
sp[0]
is the second value.
sp[-1]
is the first value.
Returns the quotient in sp[0].
div_asg
Combined division/assignment .
Usage:
target /= source
Parameters:
sp[0]
is the source
sp[-1]
points to the target
Stores the quotient in the target , leaving sp[0] pointing to the target.
eq
Compare two values .
Usage:
first == second
Parameters:
sp[0]
is the second value
sp[-1]
is the first value
Returns 1 in sp[0] if the values are equal, otherwise 0.
exit
Exits mawk with a specific exit-code .
Usage:
exit( exit_code )
Parameters:
sp[0]
is the exit_code
exit0
Exits mawk with success
Usage:
exit
Parameters:
none
exp
Compute base-e exponential function of a value .
Usage:
exp( value )
Parameters:
sp[0]
is the value
Returns the result in sp[0].
f_add_asg
Combination addition/assignment to NF .
Usage:
NF += expression
Parameters:
sp[0]
is the expression to add
f_assign
Assign an expression to NF .
Usage:
NF = expression
Parameters:
sp[0]
is the expression
f_div_asg
Combination division/assignment to NF .
Usage:
NF /= expression
Parameters:
sp[0]
is the expression
f_mod_asg
Combination modulus/assignment to NF .
Usage:
NF %= expression
Parameters:
sp[0]
is the expression
f_mul_asg
Combination multiplication/assignment to NF .
Usage:
NF *= expression
Parameters:
sp[0]
is the expression
f_post_dec
Post-decrement using NF .
Usage:
NF--
Parameters:
holds a reference to the field to use
f_post_inc
Post-increment using NF .
Usage:
NF++
Parameters:
holds a reference to the field to use
f_pow_asg
Exponentiation using NF .
Usage:
NF ˆ= expression
Parameters:
sp[0]
is the expression to use
f_pre_dec
Predecrement using NF .
Usage:
--NF
Parameters:
sp[0]
holds a reference to the field to use
f_pre_inc
Preincrement using NF .
Usage:
++NF
Parameters:
sp[0]
holds a reference to the field to use
f_pusha
Push array reference to data split-up as fields. .
Usage:
$0 =
expression
getline
Parameters:
cdp[0]
is a reference to the data to be split/assigned.
Returns the resulting array reference in sp[0].
f_pushi
Push contents of numbered field .
Usage:
$ expression
Parameters:
cdp[0]
holds a reference to $ expression
cdp[1]
holds expression
Returns the field’s value in sp[0].
f_sub_asg
Combination subtraction/assignment to NF .
Usage:
NF -= expression
Parameters:
sp[0]
holds a reference to the field to use
fe_pusha
Push reference to numbered field .
Usage:
$ number
Parameters:
sp[0]
holds the field number
Returns a reference to the field in sp[0].
fe_pushi
Push content of numbered field .
Usage:
$ number
Parameters:
sp[0]
holds the field number
Returns the field’s content in sp[0].
fflush
Flush the output file or pipe associated with an expression .
Usage:
fflush( expression )
Parameters:
sp[0]
is the expression value
Returns the result in sp[0].
gt
Test if first value is greater than the second .
Usage:
first > second
Parameters:
sp[0]
holds the second value.
sp[-1]
holds the first value.
Returns 1 in sp[0] if the first value is greater than, otherwise 0.
gte
Test if first value is greater than or equal to the second .
Usage:
first >= second
Parameters:
sp[0]
holds the second value.
sp[-1]
holds the first value.
Returns 1 in sp[0] if the first value is greater than or equal, otherwise 0.
index
Find the position of the second string in the first .
Usage:
index( first , second )
Parameters:
sp[0]
is the second string
sp[0]
is the first string
Returns the position in sp[0] starting at 1 if found, 0 if not found.
int
Returns a value truncated towards zero. .
Usage:
int( value )
Parameters:
sp[0]
is the value
Returns the result in sp[0].
jmain
Go from BEGIN code to MAIN code .
Usage:
(internal state)
Parameters:
|
none |
jmp
Jump to a new byte-code position, by a given number of bytes .
Usage:
(internal state)
Parameters:
cdp[0]
holds the (signed) number of bytes by which to jump.
jnz
Jump to a new byte-code position if sp[0] is nonzero, by a given number of bytes .
Usage:
(internal state)
Parameters:
|
cdp[0] |
holds the (signed) number of bytes by which to jump.
sp[0]
holds a value to compare against 0.
jz
Jump to a new byte-code position if sp[0] is zero, by a given number of bytes .
Usage:
(internal state)
Parameters:
|
cdp[0] |
holds the (signed) number of bytes by which to jump.
sp[0]
holds a value to compare against 0.
l_pusha
Push a local address onto the evaluation stack .
Usage:
(internal state)
Parameters:
cdp[0]
holds the offset from the frame pointer fp .
Returns the address in sp[0].
l_pushi
Push contents of a local variable onto the evaluation stack .
Usage:
(internal state)
Parameters:
cdp[0]
holds the offset from the frame pointer fp .
Returns the contents of the local variable in sp[0].
la_pusha
Pushes a reference to an array onto the evaluation stack .
Usage:
arrayname
Parameters:
cdp[0]
holds the offset from the frame pointer fp of a reference to an array.
Returns a reference to the array in sp[0].
lae_pusha
Pushes a reference to a given array cell onto the evaluation stack .
Usage:
arrayname [ expression ]
Parameters:
cdp[0]
holds the offset from the frame pointer fp of a reference to an array.
sp[0]
holds an expression
Returns a reference to the specified array cell in sp[0].
lae_pushi
Pushes the contents of a given array cell onto the evaluation stack .
Usage:
arrayname [ expression ]
Parameters:
cdp[0]
holds the offset from the frame pointer fp of a reference to an array.
sp[0]
holds an expression
Returns the contents of the specified array cell in sp[0].
length
Returns the length of a string or array value .
Usage:
length( value )
Parameters:
sp[0]
is the string or array reference
Returns the length in sp[0].
ljnz
Special jump for logical-OR, always preceded by test .
Usage:
(internal state)
Parameters:
cdp[0]
holds the (signed) number of bytes by which to jump if the value is nonzero.
sp[0]
holds a value to compare against 0.
ljz
Special jump for logical-OR, always preceded by test .
Usage:
(internal state)
Parameters:
cdp[0]
holds the (signed) number of bytes by which to jump if the value is zero.
sp[0]
holds a value to compare against 0.
log
Compute the natural logarithm of a value .
Usage:
log( value )
Parameters:
sp[0]
is the value
Returns the result in sp[0].
lt
Test if first value is less than the second .
Usage:
first < second
Parameters:
sp[0]
holds the second value.
sp[-1]
holds the first value.
Returns 1 in sp[0] if the first value is less than, otherwise 0.
lte
Test if first value is less than or equal to the second .
Usage:
first <= second
Parameters:
sp[0]
holds the second value.
sp[-1]
holds the first value.
Returns 1 in sp[0] if the first value is less than or equal, otherwise 0.
match0
Test if $0 matches a given regular expression .
Usage:
$0 ˜ regex
Parameters:
cdp[0]
holds a reference to a regular expression.
Returns 1 in sp[0] if $0 matches the regular expression, 0 otherwise.
match1
Test if a given expression matches a given regular expression .
Usage:
expression ˜ regex
Parameters:
cdp[0]
holds a reference to a regular expression.
sp[0]
holds an expression to test.
Returns 1 in sp[0] if the expression matches the regular expression, 0 otherwise.
match2
Test if an expression in sp[-1] matches the regular expression in sp[0] .
Usage:
expression ˜ regex
Parameters:
sp[0]
holds a reference to a regular expression.
sp[-1]
holds an expression to test.
Returns 1 in sp[0] if the expression matches the regular expression, 0 otherwise.
mktime
Converts a date specification in systime format to a timestamp .
Usage:
mktime( string )
Parameters:
sp[0]
holds the date-specification string
Returns the result in sp[0].
mod
Compute modulus/remainder with two operands .
Usage:
first % second
Parameters:
sp[0]
holds the second operand
sp[-1]
holds the first operand
Returns the remainder in sp[0].
mod_asg
Assign modulus/remainder with two operands .
Usage:
first %= second
Parameters:
sp[0]
holds the second operand
cdp[0]
holds the first operand
Returns the remainder in sp[0] as well as replacing the first value.
mul
Compute product with two operands .
Usage:
first * second
Parameters:
sp[0]
holds the second value
sp[-1]
holds the first value
Returns the product in sp[0].
mul_asg
Assign product with two operands .
Usage:
first *= second
Parameters:
sp[0]
holds the second value
sp[-1]
holds the first value
Returns the product in sp[0] as well as replacing the first value.
neq
Compare two values .
Usage:
first != second
Parameters:
sp[0]
is the second value
sp[-1]
is the first value
Returns 1 in sp[0] if the values are not equal, otherwise 0.
next
Read the next record, restart pattern testing .
Usage:
next
Parameters:
|
none |
nextfile
Begin processing the next file listed on the command line .
Usage:
nextfile
Parameters:
|
none |
nf_pushi
Push the number of fields (NF) onto the evaluation stack .
Usage:
(internal state)
Parameters:
|
none |
not
Compute a logical negation .
Usage:
! value
Parameters:
sp[0]
holds a value to negate.
Returns the result on the evaluation stack, i.e., 0 if the value is nonzero and 1 otherwise.
ol_gl
Read into $0 using getline .
Usage:
getline
Parameters:
|
none |
ol_gl_nr
Read into $0 using getline, updating NR and FNR .
Usage:
getline < file
Parameters:
|
none |
omain
Start executing the main section of the script (between BEGIN and END) .
Usage:
(internal state)
Parameters:
|
none |
pop
Pop the evaluation stack, discarding the value .
Usage:
(internal state)
Parameters:
|
none |
pop_al
Finish an array “in” loop, deallocating the state information .
Usage:
(internal state)
Parameters:
|
none |
post_dec
Post-decrement a value .
Usage:
value --
Parameters:
sp[0]
holds the value to decrement
Returns the updated value in sp[0].
post_inc
Post-increment a value .
Usage:
value ++
Parameters:
sp[0]
holds the value to increment
Returns the updated value in sp[0].
pow
Compute the first value raised to the power of the second value .
Usage:
first ˆ second
Parameters:
sp[0]
holds the second value
sp[-1]
holds the first value
Returns the result in sp[0].
pow_asg
Assign the first value raised to the power of the second value .
Usage:
variable = first ˆ second
Parameters:
cdp[0]
is a reference to the variable which will be assigned the result
sp[0]
holds the second value
sp[-1]
holds the first value
pre_dec
Pre-decrement a value .
Usage:
-- value
Parameters:
sp[0]
holds the value to decrement.
Returns the updated value in sp[0];.
pre_inc
Pre-increment a value .
Usage:
++ value
Parameters:
sp[0]
holds the value to decrement.
Returns the updated value in sp[0];.
pusha
Push array address onto stack .
Usage:
(internal state)
Parameters:
cdp[0]
array reference follows the command.
Returns the array in sp[0].
pushc
Push a data cell onto the evaluation stack .
Usage:
(internal state)
Parameters:
cdp[0]
is a reference to the data to push
Returns a reference to the result in sp[0].
pushd
Push a double floating value onto the evaluation stack .
Usage:
(internal state)
Parameters:
cdp[0]
is a reference to the data to push
Returns a reference to the result in sp[0].
pushi
Push contents of next referenced variable onto the evaluation stack .
Usage:
(internal state)
Parameters:
cdp[0]
is a reference to the data cell to copy.
Returns a reference to the result in sp[0].
pushint
Reserve the next slot on the evaluation stack, setting its type .
Usage:
(internal state)
Parameters:
cdp[0]
holds the type to set in the new slot, e.g., for data via I/O redirection
Returns a reference to the result in sp[0].
pushs
Push a reference to a string value onto the evaluation stack .
Usage:
(internal state)
Parameters:
cdp[0]
holds a reference to the string value
Returns a reference to the result in sp[0].
rand
Returns a random number between zero and one. .
Usage:
rand()
Parameters:
|
none |
Returns the result in sp[0].
range
Test a range pattern: pat1, pat2 { action } .
Usage:
(internal state)
Parameters:
cdp[0].op
a flag, test pat1 if on else pat2
cdp[1].op
offset of pat2 code from cdp
cdp[2].op
offset of action code from cdp
cdp[3].op
offset of code after the action from cdp
cdp[4]
start of pat1 code
sp[0]
holds arguments for the action.
ret
Return a function value .
Usage:
return value
Parameters:
sp[0]
holds the return value
When calling a function, mawk saves the current stack, creating a new one. On return, mawk restores the previous stack and returns the function value in sp[0].
ret0
Return from a function without providing a return-value .
Usage:
return
Parameters:
sp[0]
is modified to make the value uninitialized.
As in the ret operation, mawk restores the previous stack. After the return, sp[0] is an uninitialized value.
set_al
Begin an array “in” loop .
Usage:
for ( iterator in arrayname ) statement
Parameters:
sp[0]
holds a reference to the array
sp[-1]
holds a reference to the iteration variable
Mawk pushes a new entry onto the array loop stack, and updates cdp to point to the statement to execute.
sin
Compute the sine of a value in radians .
Usage:
sin( value )
Parameters:
sp[0]
holds the value
Returns the result in sp[0].
sprintf
Returns a string constructed from expression-list according to format .
Usage:
sprintf( format [, value1 [,... ] ] )
Parameters:
sp[0]
is the last parameter value; there can be up to 255.
Returns the resulting string in sp[0].
sqrt
Returns the square root of a value .
Usage:
sqrt( value 0
Parameters:
sp[0]
is the value
Returns the result in sp[0].
srand
Seeds the random number generator .
Usage:
srand(
value
)
srand( )
Parameters:
sp[0]
is the seed value, which may be uninitialized
Returns the previous seed value in sp[0].
stop
Finish a range pattern .
Usage:
(internal state)
Parameters:
|
none |
strftime
Formats the given timestamp using the given format .
Usage:
strftime(
format
,
timestamp
,
utc
)
strftime(
format
,
timestamp
)
strftime(
format
)
strftime( )
Parameters:
Zero to three
parameters may be on the stack. If all three are used, they
are as follows:
sp[0]
is the utc flag
sp[-1]
is the timestamp value
sp[-2]
is the format
Returns the result in sp[0].
sub
Subtract the second value from the first .
Usage:
first - second
Parameters:
sp[0]
holds the second value
sp[-1]
holds the first value
Returns the result in sp[0].
sub_asg
Assign the difference of two values to a variable .
Usage:
target = first - second
Parameters:
cdp[0]
holds a reference to the variable to which to assign the result
sp[0]
holds the second value
sp[-1]
holds the first value
Stores the difference in the target , leaving sp[0] pointing to the target .
substr
eturns the substring of string s, starting at index i, of length n .
Usage:
substr(s,i,n)
substr(s,i)
Parameters:
Two or three
parameters may be on the stack. If all three are used, they
are as follows:
sp[0]
holds the length n .
sp[0]
holds the index i .
sp[0]
holds the string s .
system
Executes a command, returning the wait-status .
Usage:
status = system( command )
Parameters:
sp[0]
is the command to execute
Returns the wait-status in sp[0].
systime
Returns the current time of day as the number of seconds since the Epoch .
Usage:
systime( )
Parameters:
|
none |
Returns the result in sp[0].
test
Test a logical expression .
Usage:
value
Parameters:
sp[0]
holds a value to test.
Returns the result on the evaluation stack, i.e., 1 if the value is nonzero and 0 otherwise.
tolower
Copy a string, converting to lowercase .
Usage:
tolower( value )
Parameters:
sp[0]
is the value to convert
Returns the result in sp[0].
toupper
Copy a string, converting to uppercase .
Usage:
toupper( value )
Parameters:
sp[0]
is the value to convert
Returns the result in sp[0].
uminus
Unitary minus .
Usage:
- value
Parameters:
sp[0]
contains a value to negate. As a side-effect, if the value is a string, it is cast to double floating point.
Returns the result in sp[0].
uplus
Unitary plus .
Usage:
+ value
Parameters:
sp[0]
contains a value to use. As a side-effect, if the value is a string, it is cast to double floating point.
Returns the result in sp[0].
REGULAR EXPRESSIONS
M_1J
mandatory jump
M_2JA
optional (undesirable) jump
M_2JB
optional (desirable) jump
M_2JC
pop position, optional jump (to continue looping) if advanced
M_ACCEPT
end of match
M_ANY
arbitrary character (.)
M_CLASS
character class
M_END
end of string ($)
M_ENTER
prepare an iteration by resetting the counter. This precedes a M_SAVE_POS .
M_LOOP
Like M_2JC , this is the last part of a conditional loop. It is used where one or both of the minimum and maximum iterations are known.
M_SAVE_POS
push position onto stack, at the beginning of a loop
M_START
start of string (ˆ)
M_STR
matching a literal string
M_U
arbitrary string (.*)