csv-add-rpn - add a new column from RPN expression
csv-add-rpn [OPTION]…
Read CSV stream from standard input and print it back to standard output with a new column produced by evaluation of RPN (reverse Polish notation) expression.
Variables:
| syntax | description | example |
|---|---|---|
| %.* | value of column | %name |
Constants:
| syntax | description | example |
|---|---|---|
| [-][1-9][0-9]* | decimal integer | 1, 1294, -89 |
| [-][0-9]+.[0-9]* | floating point number | 1.0, 12.94, -0.89 |
| [-]0x[0-9a-fA-F]+ | hexadecimal integer | 0x1, 0x1A34, -0x8A |
| [-]0[0-9]+ | octal integer | 01, 01234, -067 |
| [-]0b[01]+ | binary integer | 0b1, 0b1101, -0b10 |
| '[^']*' | string | 'text' |
| "[^"]*" | string | "text" |
Operators:
| name | description | example |
|---|---|---|
| + | addition | %num 5 + |
| - | subtraction | %num 5 - |
| * | multiplication | %num 5 * |
| / | division | %num 5 / |
| % | modulo | %num 5 % |
| | | bitwise or | %num 5 | |
| & | bitwise and | %num 5 & |
| ~ | bitwise negation | %num ~ |
| ^ | bitwise xor | %num 5 ^ |
| << | bitwise left shift | %num 5 << |
| >> | bitwise right shift | %num 5 >> |
| lt, < | less | %num 5 lt, %num 5 < |
| le, <= | less or equal | %num 5 le, %num 5 <= |
| gt, > | greater | %num 5 gt, %num 5 > |
| ge, >= | greater or equal | %num 5 ge, %num 5 >= |
| eq, == | equal | %num 5 eq, %num 5 == |
| ne, != | not equal | %num 5 ne, %num 5 != |
| and | logical and | %bool1 %bool2 and |
| or | logical or | %bool1 %bool2 or |
| xor | logical exclusive or | %bool1 %bool2 xor |
| not | logical negation | %bool1 not |
Functions:
| name | description | example |
|---|---|---|
| if | if then else | %bool %val1 %val2 if |
| substr | substring | %str 1 3 substr |
| strlen,length | string length | %str strlen, %str length |
| concat | concatenation | %str1 %str2 concat |
| like | match pattern | %str 'patt%' like |
| tostring | convert to string | %num %base tostring |
| toint | convert to integer | %str %base toint |
| replace | replace string | %str 'pat' 'repl' 1 replace |
| replace_bre | replace string using basic RE | %str 'pat' 'bre' 1 replace_bre |
| replace_ere | replace string using ext. RE | %str 'pat' 'ere' 1 replace_ere |
| matches_bre | string matches basic RE | %str 'pat' 1 matches_bre |
| matches_ere | string matches extended RE | %str 'pat' 1 matches_ere |
| next | next integer from sequence | 'sequence name' next |
csv-ls -c name,size,blocks | csv-add-rpn -n space_used -e "%blocks 512 *" -scsv-grep-rpn(1), csv-show(1), csv-nix-tools(7)