miller/go/u/try-cst
2020-09-23 16:48:37 -04:00

256 lines
15 KiB
Bash
Executable file

#!/bin/bash
set -euo pipefail
run_mlr() {
# Use just "mlr" for info messages
echo
echo ----------------------------------------------------------------
echo mlr "$@"
./mlr "$@"
}
echo; run_mlr --from u/s.dkvp --idkvp --opprint put ''
echo; run_mlr --from u/s.dkvp --idkvp --opprint put '$j=$i+$i'
echo; run_mlr --from u/s.dkvp --idkvp --opprint put '$j=$i+$x'
echo; run_mlr --from u/s.dkvp --idkvp --opprint put '$j=$y+$x'
echo; run_mlr --from u/s.dkvp --idkvp --opprint put '$j=$y+$i'
echo; run_mlr --from u/s.dkvp --idkvp --opprint put '$j=$y+$y'
echo; run_mlr --from u/s.dkvp --idkvp --opprint put '$j=$i+$i'
echo; run_mlr --from u/s.dkvp --idkvp --opprint put '$y=$x*1e6'
echo; run_mlr --from u/s.dkvp --idkvp --opprint put '$y=$x+1e6'
echo; run_mlr --from u/s.dkvp --idkvp --opprint put '$y=$x+1'
echo; run_mlr --from u/s.dkvp --idkvp --opprint put '$y=FILENAME'
echo; run_mlr --from u/s.dkvp --idkvp --opprint put '$y=FILENUM'
echo; run_mlr --from u/s.dkvp --idkvp --opprint put '$y=NF'
echo; run_mlr --from u/s.dkvp --idkvp --opprint put '$y=NR'
echo; run_mlr --idkvp --opprint put '$y=FNR' u/s.dkvp u/t.dkvp
echo; run_mlr --idkvp --opprint put '$y=NR' u/s.dkvp u/t.dkvp
echo; run_mlr --icsv --opprint put '$y=FNR' u/s.csv u/t.csv
echo; run_mlr --idkvp --opprint put '$y=FNR+1' u/s.dkvp u/t.dkvp
echo; run_mlr --idkvp --opprint put '$y=FNR+$i' u/s.dkvp u/t.dkvp
echo; run_mlr --idkvp --opprint put '$y=FNR+3' u/s.dkvp u/t.dkvp
echo; run_mlr --idkvp --opprint put '$y=FNR+3+$i' u/s.dkvp u/t.dkvp
echo; run_mlr --idkvp --opprint put '$y=$i+$y' u/s.dkvp u/t.dkvp
echo; run_mlr --idkvp --opprint put '$y=$i+$x' u/s.dkvp u/t.dkvp
echo; run_mlr --idkvp --opprint put '$z=$x+$y' u/s.dkvp u/t.dkvp
echo; run_mlr --idkvp --opprint put '$z=$x+$i' u/s.dkvp u/t.dkvp
echo; run_mlr --idkvp --opprint put '$z=NR+$i' u/s.dkvp u/t.dkvp
echo; run_mlr --idkvp --opprint put '$z=NR-$i' u/s.dkvp u/t.dkvp
echo; run_mlr --idkvp --opprint put '$z=4-1' u/s.dkvp u/t.dkvp
echo; run_mlr --idkvp --opprint put '$z=NR' u/s.dkvp u/t.dkvp
echo; run_mlr --idkvp --opprint put '$z=$i' u/s.dkvp u/t.dkvp
echo; run_mlr --idkvp --opprint put '$z=100*NR-$i' u/s.dkvp u/t.dkvp
echo; run_mlr --idkvp --opprint put '$z=100*$i+$x' u/s.dkvp u/t.dkvp
echo; run_mlr --from u/s.dkvp --idkvp --opprint put '$z=100*$i+$x'
echo; run_mlr --from u/s.dkvp --idkvp --opprint put '$z=100*$i/$x'
echo; run_mlr --from u/s.dkvp --idkvp --opprint put '$z=NR/$i'
echo; run_mlr --from u/s.dkvp --idkvp --opprint put '$z=100/$i'
echo; run_mlr --from u/s.dkvp --idkvp --opprint put '$z=100//$i'
echo; run_mlr --from u/s.dkvp --idkvp --opprint put '$z=100//$x'
echo; run_mlr --from u/s.dkvp --idkvp --opprint put '$z=100.0//$i'
echo; run_mlr --from u/s.dkvp --idkvp --opprint put '$z=100.0//$i'
echo; run_mlr --from u/s.dkvp --idkvp --opprint put '$z=100.0/$i'
echo; run_mlr --from u/s.dkvp --idkvp --opprint put '$z=100.0'
echo; run_mlr --from u/s.dkvp --idkvp --opprint put '$z=100'
echo; run_mlr --from u/s.dkvp --idkvp --opprint put '$z=100.4'
echo; run_mlr --from u/s.dkvp --idkvp --opprint put '$z=1.2'
echo; run_mlr --from u/s.dkvp --idkvp --opprint put '$z=100.0/$i'
echo; run_mlr --from u/s.dkvp --idkvp --opprint put '$z=100.0//$i'
echo; run_mlr --from u/s.dkvp --idkvp --opprint put '$z=0x7fffffffffffffff + 0x7fffffffffffffff'
echo; run_mlr --from u/s.dkvp --idkvp --opprint put '$z=0x7fffffffffffffff .+ 0x7fffffffffffffff'
echo; run_mlr --from u/s.dkvp --idkvp --opprint put '$z=0x7fffffffffffffff * 0x7fffffffffffffff'
echo; run_mlr --from u/s.dkvp --idkvp --opprint put '$z=0x7fffffffffffffff .* 0x7fffffffffffffff'
echo; run_mlr --from u/s.dkvp --idkvp --opprint put '$z= (~ $i) + 1'
echo; run_mlr --from u/s.dkvp --idkvp --opprint put '$z= $i == 2'
echo; run_mlr --from u/s.dkvp --idkvp --opprint put '$z= $i != 2'
echo; run_mlr --from u/s.dkvp --idkvp --opprint put '$z= $i > 2'
echo; run_mlr --from u/s.dkvp --idkvp --opprint put '$z= $i >= 2'
echo; run_mlr --from u/s.dkvp --idkvp --opprint put '$z= $i < 2'
echo; run_mlr --from u/s.dkvp --idkvp --opprint put '$z= $i >= 2'
echo; run_mlr --from u/s.dkvp --idkvp --opprint put '$z = $i < 5 ? "low" : "high"'
echo; run_mlr --from u/s.dkvp --idkvp --opprint put '$z = $i ** 3'
echo; run_mlr --from u/s.dkvp --idkvp --opprint put '$z = $x ** 0.5'
echo; run_mlr --from u/s.dkvp --idkvp --opprint put '$z = true && true'
echo; run_mlr --from u/s.dkvp --idkvp --opprint put '$z = true && false'
echo; run_mlr --from u/s.dkvp --idkvp --opprint put '$z = false && true'
echo; run_mlr --from u/s.dkvp --idkvp --opprint put '$z = false && false'
echo; run_mlr --from u/s.dkvp --idkvp --opprint put '$z = true && 4'
echo; run_mlr --from u/s.dkvp --idkvp --opprint put '$z = false && 4'
echo; run_mlr --from u/s.dkvp --idkvp --opprint put '$z = 4 && true'
echo; run_mlr --from u/s.dkvp --idkvp --opprint put '$z = 4 && false'
echo; run_mlr --from u/s.dkvp --idkvp --opprint put '$z = false && %%%panic%%%'
echo; run_mlr --from u/s.dkvp --idkvp --opprint put '$z = true || true'
echo; run_mlr --from u/s.dkvp --idkvp --opprint put '$z = true || false'
echo; run_mlr --from u/s.dkvp --idkvp --opprint put '$z = false || true'
echo; run_mlr --from u/s.dkvp --idkvp --opprint put '$z = false || false'
echo; run_mlr --from u/s.dkvp --idkvp --opprint put '$z = true || 4'
echo; run_mlr --from u/s.dkvp --idkvp --opprint put '$z = false || 4'
echo; run_mlr --from u/s.dkvp --idkvp --opprint put '$z = 4 || true'
echo; run_mlr --from u/s.dkvp --idkvp --opprint put '$z = 4 || false'
echo; run_mlr --from u/s.dkvp --idkvp --opprint put '$z = true || %%%panic%%%'
echo; run_mlr --from u/s.dkvp --idkvp --opprint put '$z = true ? 4 : %%%panic%%%'
echo; run_mlr --from u/s.dkvp --idkvp --opprint put '$z = false ? %%%panic%%% : 5'
echo; run_mlr --from u/s.dkvp --idkvp --opprint put '$z = "abc\"def\"ghi"'
echo; run_mlr --from u/s.dkvp --idkvp --opprint put -v '$i += 2'
echo; run_mlr --from u/s.dkvp --idkvp --opprint put -v '$i *= 2'
echo; run_mlr --from u/s.dkvp --idkvp --opprint put -v '$i /= 2'
echo; run_mlr --from u/s.dkvp --idkvp --opprint put -v '$i |= 2'
echo; run_mlr --from u/s.dkvp --idkvp --opprint put -v '$j = true; $j &&= $i < 2'
echo; run_mlr --from u/s.dkvp --idkvp --opprint put '$z = [$a,$b,$i,$x,$y][1]'
echo; run_mlr --from u/s.dkvp --idkvp --opprint put '$z = [$a,$b,$i,$x,$y][-1]'
echo; run_mlr --from u/s.dkvp --idkvp --opprint put '$z = [$a,$b,$i,$x,$y][NR]'
echo; run_mlr --from u/s.dkvp --idkvp --opprint put '$z = {"a":$a,"b":$b,"i":$i,"x":$x,"y":$y}["b"]'
echo; run_mlr --from u/s.dkvp --from u/t.dkvp --ojson put '$z=[1,2,[NR,[FILENAME,5],$x*$y]]'
echo '{"x":1}' | run_mlr --json cat
echo '{"x":[1,2,3]}' | run_mlr --json cat
echo '{"x":[1,[2,3,4],5]}' | run_mlr --json cat
echo '{"x":[1,[2,[3,4,5],6],7]}' | run_mlr --json cat
echo '{"x":{}}' | run_mlr --json cat
echo '{"x":{"a":1,"b":2,"c":3}}' | run_mlr --json cat
echo '{"x":{"a":1,"b":{"c":3,"d":4,"e":5},"f":6}}' | run_mlr --json cat
echo '{"x":{},"y":1}' | run_mlr --json cat
echo '{"x":{"a":1,"b":2,"c":3},"y":4}' | run_mlr --json cat
echo '{"x":{"a":1,"b":{"c":3,"d":4,"e":5},"f":6},"y":7}' | run_mlr --json cat
echo '{"x":1}' | ./mlr --json cat | ./mlr --json cat
echo '{"x":[1,2,3]}' | ./mlr --json cat | ./mlr --json cat
echo '{"x":[1,[2,3,4],5]}' | ./mlr --json cat | ./mlr --json cat
echo '{"x":[1,[2,[3,4,5],6],7]}' | ./mlr --json cat | ./mlr --json cat
echo '{"x":{}}' | ./mlr --json cat | ./mlr --json cat
echo '{"x":{"a":1,"b":2,"c":3}}' | ./mlr --json cat | ./mlr --json cat
echo '{"x":{"a":1,"b":{"c":3,"d":4,"e":5},"f":6}}' | ./mlr --json cat | ./mlr --json cat
echo '{"x":{},"y":1}' | ./mlr --json cat | ./mlr --json cat
echo '{"x":{"a":1,"b":2,"c":3},"y":4}' | ./mlr --json cat | ./mlr --json cat
echo '{"x":{"a":1,"b":{"c":3,"d":4,"e":5},"f":6},"y":7}' | ./mlr --json cat | ./mlr --json cat
echo; run_mlr --from u/s.dkvp --idkvp --ojson put '$z = $*["a"]'
echo; run_mlr --from u/s.dkvp --idkvp --ojson put '$z = $*'
echo; run_mlr --from u/s.dkvp --idkvp --ojson put '$* = {"s": 7, "t": 8}'
echo; run_mlr --from u/s.dkvp --idkvp --ojson put '$*["st"] = 78'
echo; run_mlr --from u/s.dkvp --idkvp --ojson put '$*["a"] = 78'
echo; run_mlr --from u/s.dkvp --idkvp --ojson put '$*["a"] = {}'
echo; run_mlr --from u/s.dkvp --idkvp --opprint put -v '$new = $["a"]'
echo; run_mlr --from u/s.dkvp --idkvp --opprint put -v '$["new"] = $a'
echo; run_mlr --from u/s.dkvp --idkvp --opprint put -v '${new} = $a . $b'
echo; run_mlr --from u/s.dkvp --idkvp --opprint put -v '$new = ${a} . ${b}'
echo; run_mlr --from u/s.dkvp --idkvp --opprint put '@tmp = $a . $b; $ab = @tmp'
echo; run_mlr --ojson --from u/s.dkvp put '@curi=$i; $curi = @curi; $lagi=@lagi; @lagi=$i'
echo; run_mlr --from u/s.dkvp --ojson put '$z["abc"]["def"]["ghi"]=NR'
echo; run_mlr --opprint --from u/s.dkvp --from u/t.dkvp put '$up = $[NR]'
echo; run_mlr --opprint --from u/s.dkvp --from u/t.dkvp put '$down = $[-NR]'
echo; run_mlr --opprint --from u/s.dkvp --from u/t.dkvp put '$up = $*[NR]'
echo; run_mlr --opprint --from u/s.dkvp --from u/t.dkvp put '$down = $*[-NR]'
echo; run_mlr --opprint --from u/s.dkvp --from u/t.dkvp put '$[1] = "new"'
echo; run_mlr --opprint --from u/s.dkvp --from u/t.dkvp put '$[2] = "new"'
echo; run_mlr --opprint --from u/s.dkvp --from u/t.dkvp put '$[5] = "new"'
echo; run_mlr --opprint --from u/s.dkvp --from u/t.dkvp put '$[-1] = "new"'
echo; run_mlr --opprint --from u/s.dkvp --from u/t.dkvp put '$[-2] = "new"'
echo; run_mlr --opprint --from u/s.dkvp --from u/t.dkvp put '$[-5] = "new"'
# expect fail echo; run_mlr --opprint --from u/s.dkvp --from u/t.dkvp put '$[1] = "new"'
echo; run_mlr --opprint --from u/s.dkvp --from u/t.dkvp put '@idx = NR % 5; @idx = @idx == 0 ? 5 : @idx; $[@idx] = "NEW"'
echo; run_mlr --opprint --from u/s.dkvp --from u/t.dkvp put '$*[1] = "new"'
echo; run_mlr --opprint --from u/s.dkvp --from u/t.dkvp put '$*[2] = "new"'
echo; run_mlr --opprint --from u/s.dkvp --from u/t.dkvp put '$*[5] = "new"'
echo; run_mlr --opprint --from u/s.dkvp --from u/t.dkvp put '$*[-1] = "new"'
echo; run_mlr --opprint --from u/s.dkvp --from u/t.dkvp put '$*[-2] = "new"'
echo; run_mlr --opprint --from u/s.dkvp --from u/t.dkvp put '$*[-5] = "new"'
# expect fail echo; run_mlr --opprint --from u/s.dkvp --from u/t.dkvp put '$[1] = "new"'
echo; run_mlr --opprint --from u/s.dkvp --from u/t.dkvp put '@idx = NR % 5; @idx = @idx == 0 ? 5 : @idx; $*[@idx] = "NEW"'
echo; run_mlr --json put '$a=$a[2]["b"][1]' u/nested.json
echo; run_mlr --ojson --from u/2.dkvp put '$abc[FILENAME] = "def"'
echo; run_mlr --ojson --from u/2.dkvp put '$abc[NR] = "def"'
echo; run_mlr --ojson --from u/2.dkvp put '$abc[FILENAME][NR] = "def"'
echo; run_mlr --ojson --from u/2.dkvp put '$abc[NR][FILENAME] = "def"'
echo; run_mlr --ojson --from u/2.dkvp put '@abc[FILENAME] = "def"; $ghi = @abc'
echo; run_mlr --ojson --from u/2.dkvp put '@abc[NR] = "def"; $ghi = @abc'
echo; run_mlr --ojson --from u/2.dkvp put '@abc[FILENAME][NR] = "def"; $ghi = @abc'
echo; run_mlr --ojson --from u/2.dkvp put '@abc[NR][FILENAME] = "def"; $ghi = @abc'
echo; run_mlr --from u/2.dkvp --ojson put '@a = 3; $new=@a'
echo; run_mlr --from u/2.dkvp --ojson put '@a = 3; @a[1]=4; $new=@a'
echo; run_mlr --from u/2.dkvp --ojson put '@a = 3; @a[1]=4;@a[1][1]=5; $new=@a'
echo; run_mlr --from u/2.dkvp --ojson put '@a = 3; @a["x"]=4; $new=@a'
echo; run_mlr --from u/2.dkvp --ojson put '@a = 3; @a["x"]=4;@a["x"]["x"]=5; $new=@a'
echo; run_mlr -n put -v '$z=max()'
echo; run_mlr -n put -v '$z=max(1)'
echo; run_mlr -n put -v '$z=max(1,)'
echo; run_mlr -n put -v '$z=max(1,2)'
echo; run_mlr -n put -v '$z=max(1,2,)'
echo; run_mlr -n put -v '$z=max(1,2,3)'
echo; run_mlr -n put -v '$z=max(1,2,3,)'
echo; run_mlr --from u/s.dkvp --opprint put '$z = max($x,$y)'
echo; run_mlr --from u/s.dkvp --opprint put '$z = min($x,$y,$i)'
echo; run_mlr --from u/s.dkvp --opprint put '$z = abs($x)'
echo; run_mlr --from u/s.dkvp --opprint put '$c = cos(2*M_PI*NR/32); $s = sin(2*M_PI*NR/32)'
echo; run_mlr --from u/s.dkvp --opprint put 'filter NR > 2'
# echo; run_mlr --from u/s.dkvp --opprint put -q '@sum += $i; emit {"sum": @sum}'
echo; run_mlr --from u/s.dkvp --opprint put -q '@sum[$a] += $i; emit {"sum": @sum}'
echo; run_mlr --from u/s.dkvp put -q '@sum += $x; dump'
echo; run_mlr --from u/s.dkvp put -q '@sum[$a] += $x; dump'
echo; run_mlr --from u/s.dkvp put -q 'begin{@sum=0} @sum += $x; end{dump}'
echo; run_mlr --from u/s.dkvp put -q 'begin{@sum={}} @sum[$a] += $x; end{dump}'
# xxx fix me
# echo; run_mlr --from u/s.dkvp put -q 'begin{@sum=[]} @sum[1+NR%2] += $x; end{dump}'
# xxx fix me
# echo; run_mlr --from u/s.dkvp put -q 'begin{} @sum[1+(NR%2)] += $x; end{dump}'
echo; run_mlr --from u/s.dkvp put 'if (NR == 1) { $z = 100 }'
echo; run_mlr --from u/s.dkvp put 'if (NR == 1) { $z = 100 } else { $z = 900 }'
echo; run_mlr --from u/s.dkvp put 'if (NR == 1) { $z = 100 } elif (NR == 2) { $z = 200 }'
echo; run_mlr --from u/s.dkvp put 'if (NR == 1) { $z = 100 } elif (NR == 2) { $z = 200 } else { $z = 900 }'
echo; run_mlr --from u/s.dkvp put 'if (NR == 1) { $z = 100 } elif (NR == 2) { $z = 200 } elif (NR == 3) { $z = 300 } else { $z = 900 }'
echo x=eeee | run_mlr put '$y=ssub($x, "e", "X")'
echo x=eeee | run_mlr put '$y=gsub($x, "e", "X")'
echo; run_mlr --opprint --from u/s.dkvp put '$z = truncate($a, -1)'
echo; run_mlr --opprint --from u/s.dkvp put '$z = truncate($a, 0)'
echo; run_mlr --opprint --from u/s.dkvp put '$z = truncate($a, 1)'
echo; run_mlr --opprint --from u/s.dkvp put '$z = truncate($a, 2)'
echo; run_mlr --opprint --from u/s.dkvp put '$z = truncate($a, 3)'
echo; run_mlr --opprint --from u/s.dkvp put '$z = truncate($a, 4)'
echo; run_mlr --from u/s.dkvp head -n 2 then put -q 'for (k in $*) { emit { "foo" : "bar" } }'
echo; run_mlr --from u/s.dkvp head -n 2 then put -q 'for (k in $*) { emit { "foo" : k } }'
echo; run_mlr --from u/s.dkvp head -n 2 then put -q 'for (k in $*) { emit { k: "bar" } }'
echo; run_mlr --from u/s.dkvp head -n 2 then put -q 'for (k in $*) { emit { k : k } }'
echo; run_mlr --from u/s.dkvp head -n 2 then put -q 'for (k,v in $*) { emit { "foo" : "bar" } }'
echo; run_mlr --from u/s.dkvp head -n 2 then put -q 'for (k,v in $*) { emit { "foo" : v } }'
echo; run_mlr --from u/s.dkvp head -n 2 then put -q 'for (k,v in $*) { emit { k: "bar" } }'
echo; run_mlr --from u/s.dkvp head -n 2 then put -q 'for (k,v in $*) { emit { k : v } }'
echo; run_mlr --from u/s.dkvp put '$z = 0; while ($z < $i) {$z += 1}'
echo; run_mlr --from u/s.dkvp put '$z = 0; do {$z += 1} while ($z < $i)'
echo; run_mlr --from u/s.dkvp put '$z = 10; while ($z < $i) {$z += 1}'
echo; run_mlr --from u/s.dkvp put '$z = 10; do {$z += 1} while ($z < $i)'