mirror of
https://github.com/johnkerl/miller.git
synced 2026-07-25 08:53:55 +00:00
107 lines
4.1 KiB
Bash
Executable file
107 lines
4.1 KiB
Bash
Executable file
#!/bin/bash
|
|
|
|
set -euo pipefail
|
|
|
|
run_mlr() {
|
|
# Use just "mlr" for info messages
|
|
echo
|
|
echo ----------------------------------------------------------------
|
|
echo mlr "$@"
|
|
./mlr "$@"
|
|
}
|
|
|
|
# With mlr -n put v, we are only parsing the DSL expression into an AST and
|
|
# then CST, but not executingit
|
|
|
|
echo; run_mlr -n put -v '$y = 1 || 2'
|
|
echo; run_mlr -n put -v '$y = 1 || 2 || 3'
|
|
echo; run_mlr -n put -v '$y = 1 || 2 && 3'
|
|
echo; run_mlr -n put -v '$y = 1 && 2 || 3'
|
|
echo; run_mlr -n put -v '$y = 1 ? 2 : 3'
|
|
echo; run_mlr -n put -v '$y = $a + $b * $c'
|
|
echo; run_mlr -n put -v '$y = $a * $b * $c'
|
|
echo; run_mlr -n put -v '$y = $a ** $b ** $c'
|
|
echo; run_mlr -n put -v '$[2] = 3'
|
|
echo; run_mlr -n put -v '$[$y] = 4'
|
|
#echo; run_mlr -n put -v '${1} = 4'
|
|
echo; run_mlr -n put -v '$x = "abc"'
|
|
echo; run_mlr -n put -v '$["abc"] = "def"'
|
|
echo; run_mlr -n put -v '$[FILENAME] = FNR'
|
|
echo; run_mlr -n put -v '$x = $a + $b + $c'
|
|
echo; run_mlr -n put -v '$x = ($a + $b) + $c; $y = $a + ($b + $c); $z = $a + ($b)+ $c'
|
|
echo; run_mlr -n put -v '$x = 2 * $a + $b . $c'
|
|
echo; run_mlr -n put -v '$x = 2 * $a + ($b . $c)'
|
|
echo; run_mlr -n put -v '$x = (NF + NR) * 7; $y = OFS . $y . "hello"'
|
|
echo; run_mlr -n put -v '$x = 123. + 1e-2 / .2e3 + 1.e-3'
|
|
echo; run_mlr -n put -v '$z=0x7fffffffffffffff + 0x7fffffffffffffff'
|
|
echo; run_mlr -n put -v '$z=0x7fffffffffffffff .+ 0x7fffffffffffffff'
|
|
echo; run_mlr -n put -v '$z=0x7fffffffffffffff * 0x7fffffffffffffff'
|
|
echo; run_mlr -n put -v '$z=0x7fffffffffffffff .* 0x7fffffffffffffff'
|
|
|
|
echo; run_mlr -n put -v '$z = []'
|
|
echo; run_mlr -n put -v '$z = [1,]'
|
|
echo; run_mlr -n put -v '$z = [1,2]'
|
|
echo; run_mlr -n put -v '$z = [1,2,]'
|
|
echo; run_mlr -n put -v '$z = [1,2,3]'
|
|
echo; run_mlr -n put -v '$z = [1,2,3,]'
|
|
|
|
echo; run_mlr -n put -v '$z = {}'
|
|
echo; run_mlr -n put -v '$z = {"a":"1"}'
|
|
echo; run_mlr -n put -v '$z = {"a":"1",}'
|
|
echo; run_mlr -n put -v '$z = {"a":"1", "b":2}'
|
|
echo; run_mlr -n put -v '$z = {"a":"1", "b":2,}'
|
|
echo; run_mlr -n put -v '$z = {"a":"1", "b":2, "c":3}'
|
|
echo; run_mlr -n put -v '$z = {"a":"1", "b":2, "c":3,}'
|
|
|
|
echo; run_mlr -n put -v '$z = $a[1]'
|
|
echo; run_mlr -n put -v '$z = $a["index"]'
|
|
echo; run_mlr -n put -v '$z = "abcde"[1]'
|
|
echo; run_mlr -n put -v '$z = "abcde"["index"]'
|
|
echo; run_mlr -n put -v '$z = $a[1:2]'
|
|
echo; run_mlr -n put -v '$z = $a[:2]'
|
|
echo; run_mlr -n put -v '$z = $a[1:]'
|
|
echo; run_mlr -n put -v '$z = $a[:]'
|
|
echo; run_mlr -n put -v '$z = [5,6,7,8,9][1]'
|
|
echo; run_mlr -n put -v '$z = {"a":1, "b":2, "c":3}["b"]'
|
|
|
|
echo; run_mlr -n put -v 'begin{}'
|
|
echo; run_mlr -n put -v 'begin{@y=1}'
|
|
echo; run_mlr -n put -v 'end{}'
|
|
echo; run_mlr -n put -v 'end{@y=1}'
|
|
# disallowed run_mlr -n put -v 'begin{}; end {}'
|
|
# disallowed run_mlr -n put -v 'begin{@y=1}; $x=2'
|
|
echo; run_mlr -n put -v '$x=2; end{@y=1}'
|
|
echo; run_mlr -n put -v 'begin{@y=1} $x=2'
|
|
echo; run_mlr -n put -v 'begin{} end {}'
|
|
echo; run_mlr -n put -v '$x=1;'
|
|
echo; run_mlr -n put -v '$x=1;$y=2;'
|
|
echo; run_mlr -n put -v 'begin{@x=1;@y=2}'
|
|
echo; run_mlr -n put -v 'begin{@x=1;@y=2;}'
|
|
echo; run_mlr -n put -v 'begin{@x=1;@y=2;} $z=3'
|
|
echo; run_mlr -n put -v 'begin{@x=1;@y=2;} $z=3;'
|
|
# disallow in the CST builder
|
|
# mlr -n put -v 'begin{end{}}'
|
|
|
|
echo; run_mlr -n put -v 'if (NR == 1) { $z = 100 }'
|
|
echo; run_mlr -n put -v 'if (NR == 1) { $z = 100 } else { $z = 900 }'
|
|
echo; run_mlr -n put -v 'if (NR == 1) { $z = 100 } elif (NR == 2) { $z = 200 }'
|
|
echo; run_mlr -n put -v 'if (NR == 1) { $z = 100 } elif (NR == 2) { $z = 200 } else { $z = 900 }'
|
|
echo; run_mlr -n put -v 'if (NR == 1) { $z = 100 } elif (NR == 2) { $z = 200 } elif (NR == 3) { $z = 300 } else { $z = 900 }'
|
|
|
|
echo; run_mlr -n put -v 'for (k in $*) { emit { k : k } }'
|
|
|
|
echo; run_mlr -n put -v 'begin {}'
|
|
echo; run_mlr -n put -v 'begin {1}'
|
|
echo; run_mlr -n put -v 'end {}'
|
|
echo; run_mlr -n put -v 'end {1}'
|
|
echo; run_mlr -n put -v 'if (1) {}'
|
|
echo; run_mlr -n put -v 'if (1) {2}'
|
|
echo; run_mlr -n put -v 'for (k in $*) {}'
|
|
echo; run_mlr -n put -v 'for (k in $*) {2}'
|
|
echo; run_mlr -n put -v 'while (false) {}'
|
|
echo; run_mlr -n put -v 'do {} while (false)'
|
|
|
|
echo; run_mlr -n put -v 'nr=NR; $nr=nr'
|
|
|
|
echo; run_mlr -n put -v 'for (i = 0; i < 10; i += 1) { $x += i }'
|
|
echo; run_mlr -n put -v 'for (;;) {}'
|