
================================================================
STATELESS MAPPERS

mlr cat test/input/abixy
a=pan,b=pan,i=1,x=0.3467901443380824,y=0.7268028627434533
a=eks,b=pan,i=2,x=0.7586799647899636,y=0.5221511083334797
a=wye,b=wye,i=3,x=0.20460330576630303,y=0.33831852551664776
a=eks,b=wye,i=4,x=0.38139939387114097,y=0.13418874328430463
a=wye,b=pan,i=5,x=0.5732889198020006,y=0.8636244699032729
a=zee,b=pan,i=6,x=0.5271261600918548,y=0.49322128674835697
a=eks,b=zee,i=7,x=0.6117840605678454,y=0.1878849191181694
a=zee,b=wye,i=8,x=0.5985540091064224,y=0.976181385699006
a=hat,b=wye,i=9,x=0.03144187646093577,y=0.7495507603507059
a=pan,b=wye,i=10,x=0.5026260055412137,y=0.9526183602969864

mlr cat /dev/null

mlr cut -f a,x test/input/abixy
a=pan,x=0.3467901443380824
a=eks,x=0.7586799647899636
a=wye,x=0.20460330576630303
a=eks,x=0.38139939387114097
a=wye,x=0.5732889198020006
a=zee,x=0.5271261600918548
a=eks,x=0.6117840605678454
a=zee,x=0.5985540091064224
a=hat,x=0.03144187646093577
a=pan,x=0.5026260055412137

mlr cut --complement -f a,x test/input/abixy
b=pan,i=1,y=0.7268028627434533
b=pan,i=2,y=0.5221511083334797
b=wye,i=3,y=0.33831852551664776
b=wye,i=4,y=0.13418874328430463
b=pan,i=5,y=0.8636244699032729
b=pan,i=6,y=0.49322128674835697
b=zee,i=7,y=0.1878849191181694
b=wye,i=8,y=0.976181385699006
b=wye,i=9,y=0.7495507603507059
b=wye,i=10,y=0.9526183602969864

mlr having-fields --at-least a,b test/input/abixy
a=pan,b=pan,i=1,x=0.3467901443380824,y=0.7268028627434533
a=eks,b=pan,i=2,x=0.7586799647899636,y=0.5221511083334797
a=wye,b=wye,i=3,x=0.20460330576630303,y=0.33831852551664776
a=eks,b=wye,i=4,x=0.38139939387114097,y=0.13418874328430463
a=wye,b=pan,i=5,x=0.5732889198020006,y=0.8636244699032729
a=zee,b=pan,i=6,x=0.5271261600918548,y=0.49322128674835697
a=eks,b=zee,i=7,x=0.6117840605678454,y=0.1878849191181694
a=zee,b=wye,i=8,x=0.5985540091064224,y=0.976181385699006
a=hat,b=wye,i=9,x=0.03144187646093577,y=0.7495507603507059
a=pan,b=wye,i=10,x=0.5026260055412137,y=0.9526183602969864

mlr having-fields --at-least a,c test/input/abixy

mlr having-fields --at-least a,b,i,x,y test/input/abixy
a=pan,b=pan,i=1,x=0.3467901443380824,y=0.7268028627434533
a=eks,b=pan,i=2,x=0.7586799647899636,y=0.5221511083334797
a=wye,b=wye,i=3,x=0.20460330576630303,y=0.33831852551664776
a=eks,b=wye,i=4,x=0.38139939387114097,y=0.13418874328430463
a=wye,b=pan,i=5,x=0.5732889198020006,y=0.8636244699032729
a=zee,b=pan,i=6,x=0.5271261600918548,y=0.49322128674835697
a=eks,b=zee,i=7,x=0.6117840605678454,y=0.1878849191181694
a=zee,b=wye,i=8,x=0.5985540091064224,y=0.976181385699006
a=hat,b=wye,i=9,x=0.03144187646093577,y=0.7495507603507059
a=pan,b=wye,i=10,x=0.5026260055412137,y=0.9526183602969864

mlr having-fields --which-are a,b,i,x test/input/abixy

mlr having-fields --which-are a,b,i,x,y test/input/abixy
a=pan,b=pan,i=1,x=0.3467901443380824,y=0.7268028627434533
a=eks,b=pan,i=2,x=0.7586799647899636,y=0.5221511083334797
a=wye,b=wye,i=3,x=0.20460330576630303,y=0.33831852551664776
a=eks,b=wye,i=4,x=0.38139939387114097,y=0.13418874328430463
a=wye,b=pan,i=5,x=0.5732889198020006,y=0.8636244699032729
a=zee,b=pan,i=6,x=0.5271261600918548,y=0.49322128674835697
a=eks,b=zee,i=7,x=0.6117840605678454,y=0.1878849191181694
a=zee,b=wye,i=8,x=0.5985540091064224,y=0.976181385699006
a=hat,b=wye,i=9,x=0.03144187646093577,y=0.7495507603507059
a=pan,b=wye,i=10,x=0.5026260055412137,y=0.9526183602969864

mlr having-fields --which-are a,b,i,y,x test/input/abixy
a=pan,b=pan,i=1,x=0.3467901443380824,y=0.7268028627434533
a=eks,b=pan,i=2,x=0.7586799647899636,y=0.5221511083334797
a=wye,b=wye,i=3,x=0.20460330576630303,y=0.33831852551664776
a=eks,b=wye,i=4,x=0.38139939387114097,y=0.13418874328430463
a=wye,b=pan,i=5,x=0.5732889198020006,y=0.8636244699032729
a=zee,b=pan,i=6,x=0.5271261600918548,y=0.49322128674835697
a=eks,b=zee,i=7,x=0.6117840605678454,y=0.1878849191181694
a=zee,b=wye,i=8,x=0.5985540091064224,y=0.976181385699006
a=hat,b=wye,i=9,x=0.03144187646093577,y=0.7495507603507059
a=pan,b=wye,i=10,x=0.5026260055412137,y=0.9526183602969864

mlr having-fields --which-are a,b,i,x,w test/input/abixy

mlr having-fields --which-are a,b,i,x,y,z test/input/abixy

mlr having-fields --at-most a,c test/input/abixy

mlr having-fields --at-most a,b,i,x,y test/input/abixy
a=pan,b=pan,i=1,x=0.3467901443380824,y=0.7268028627434533
a=eks,b=pan,i=2,x=0.7586799647899636,y=0.5221511083334797
a=wye,b=wye,i=3,x=0.20460330576630303,y=0.33831852551664776
a=eks,b=wye,i=4,x=0.38139939387114097,y=0.13418874328430463
a=wye,b=pan,i=5,x=0.5732889198020006,y=0.8636244699032729
a=zee,b=pan,i=6,x=0.5271261600918548,y=0.49322128674835697
a=eks,b=zee,i=7,x=0.6117840605678454,y=0.1878849191181694
a=zee,b=wye,i=8,x=0.5985540091064224,y=0.976181385699006
a=hat,b=wye,i=9,x=0.03144187646093577,y=0.7495507603507059
a=pan,b=wye,i=10,x=0.5026260055412137,y=0.9526183602969864

mlr having-fields --at-most a,b,i,x,y,z test/input/abixy
a=pan,b=pan,i=1,x=0.3467901443380824,y=0.7268028627434533
a=eks,b=pan,i=2,x=0.7586799647899636,y=0.5221511083334797
a=wye,b=wye,i=3,x=0.20460330576630303,y=0.33831852551664776
a=eks,b=wye,i=4,x=0.38139939387114097,y=0.13418874328430463
a=wye,b=pan,i=5,x=0.5732889198020006,y=0.8636244699032729
a=zee,b=pan,i=6,x=0.5271261600918548,y=0.49322128674835697
a=eks,b=zee,i=7,x=0.6117840605678454,y=0.1878849191181694
a=zee,b=wye,i=8,x=0.5985540091064224,y=0.976181385699006
a=hat,b=wye,i=9,x=0.03144187646093577,y=0.7495507603507059
a=pan,b=wye,i=10,x=0.5026260055412137,y=0.9526183602969864

mlr rename b,BEE,x,EKS test/input/abixy
a=pan,BEE=pan,i=1,EKS=0.3467901443380824,y=0.7268028627434533
a=eks,BEE=pan,i=2,EKS=0.7586799647899636,y=0.5221511083334797
a=wye,BEE=wye,i=3,EKS=0.20460330576630303,y=0.33831852551664776
a=eks,BEE=wye,i=4,EKS=0.38139939387114097,y=0.13418874328430463
a=wye,BEE=pan,i=5,EKS=0.5732889198020006,y=0.8636244699032729
a=zee,BEE=pan,i=6,EKS=0.5271261600918548,y=0.49322128674835697
a=eks,BEE=zee,i=7,EKS=0.6117840605678454,y=0.1878849191181694
a=zee,BEE=wye,i=8,EKS=0.5985540091064224,y=0.976181385699006
a=hat,BEE=wye,i=9,EKS=0.03144187646093577,y=0.7495507603507059
a=pan,BEE=wye,i=10,EKS=0.5026260055412137,y=0.9526183602969864

mlr rename nonesuch,nonesuch,x,EKS test/input/abixy
a=pan,b=pan,i=1,EKS=0.3467901443380824,y=0.7268028627434533
a=eks,b=pan,i=2,EKS=0.7586799647899636,y=0.5221511083334797
a=wye,b=wye,i=3,EKS=0.20460330576630303,y=0.33831852551664776
a=eks,b=wye,i=4,EKS=0.38139939387114097,y=0.13418874328430463
a=wye,b=pan,i=5,EKS=0.5732889198020006,y=0.8636244699032729
a=zee,b=pan,i=6,EKS=0.5271261600918548,y=0.49322128674835697
a=eks,b=zee,i=7,EKS=0.6117840605678454,y=0.1878849191181694
a=zee,b=wye,i=8,EKS=0.5985540091064224,y=0.976181385699006
a=hat,b=wye,i=9,EKS=0.03144187646093577,y=0.7495507603507059
a=pan,b=wye,i=10,EKS=0.5026260055412137,y=0.9526183602969864

mlr regularize test/input/regularize.dkvp
a=1,c=2,b=3
e=4,d=5
a=6,c=7,b=8


================================================================
TRIVIAL RETAINERS

mlr group-by a test/input/abixy
a=pan,b=pan,i=1,x=0.3467901443380824,y=0.7268028627434533
a=pan,b=wye,i=10,x=0.5026260055412137,y=0.9526183602969864
a=eks,b=pan,i=2,x=0.7586799647899636,y=0.5221511083334797
a=eks,b=wye,i=4,x=0.38139939387114097,y=0.13418874328430463
a=eks,b=zee,i=7,x=0.6117840605678454,y=0.1878849191181694
a=wye,b=wye,i=3,x=0.20460330576630303,y=0.33831852551664776
a=wye,b=pan,i=5,x=0.5732889198020006,y=0.8636244699032729
a=zee,b=pan,i=6,x=0.5271261600918548,y=0.49322128674835697
a=zee,b=wye,i=8,x=0.5985540091064224,y=0.976181385699006
a=hat,b=wye,i=9,x=0.03144187646093577,y=0.7495507603507059

mlr group-by a,b test/input/abixy
a=pan,b=pan,i=1,x=0.3467901443380824,y=0.7268028627434533
a=eks,b=pan,i=2,x=0.7586799647899636,y=0.5221511083334797
a=wye,b=wye,i=3,x=0.20460330576630303,y=0.33831852551664776
a=eks,b=wye,i=4,x=0.38139939387114097,y=0.13418874328430463
a=wye,b=pan,i=5,x=0.5732889198020006,y=0.8636244699032729
a=zee,b=pan,i=6,x=0.5271261600918548,y=0.49322128674835697
a=eks,b=zee,i=7,x=0.6117840605678454,y=0.1878849191181694
a=zee,b=wye,i=8,x=0.5985540091064224,y=0.976181385699006
a=hat,b=wye,i=9,x=0.03144187646093577,y=0.7495507603507059
a=pan,b=wye,i=10,x=0.5026260055412137,y=0.9526183602969864

mlr group-like test/input/het.dkvp
host=jupiter
host=saturn
host=mars
host=jupiter
host=mars
host=saturn
df/tmp=2.43MB,uptime=32345sec
df/tmp=1.34MB,uptime=234214132sec
df/tmp=4.97MB,uptime=345089805sec
df/tmp=0.04MB,uptime=890sec
df/tmp=8.55MB,uptime=787897777sec
df/tmp=9.47MB,uptime=234289080sec

mlr tac test/input/abixy
a=pan,b=wye,i=10,x=0.5026260055412137,y=0.9526183602969864
a=hat,b=wye,i=9,x=0.03144187646093577,y=0.7495507603507059
a=zee,b=wye,i=8,x=0.5985540091064224,y=0.976181385699006
a=eks,b=zee,i=7,x=0.6117840605678454,y=0.1878849191181694
a=zee,b=pan,i=6,x=0.5271261600918548,y=0.49322128674835697
a=wye,b=pan,i=5,x=0.5732889198020006,y=0.8636244699032729
a=eks,b=wye,i=4,x=0.38139939387114097,y=0.13418874328430463
a=wye,b=wye,i=3,x=0.20460330576630303,y=0.33831852551664776
a=eks,b=pan,i=2,x=0.7586799647899636,y=0.5221511083334797
a=pan,b=pan,i=1,x=0.3467901443380824,y=0.7268028627434533

mlr tac /dev/null


================================================================
SORT

mlr sort -f a test/input/abixy
a=eks,b=pan,i=2,x=0.7586799647899636,y=0.5221511083334797
a=eks,b=wye,i=4,x=0.38139939387114097,y=0.13418874328430463
a=eks,b=zee,i=7,x=0.6117840605678454,y=0.1878849191181694
a=hat,b=wye,i=9,x=0.03144187646093577,y=0.7495507603507059
a=pan,b=pan,i=1,x=0.3467901443380824,y=0.7268028627434533
a=pan,b=wye,i=10,x=0.5026260055412137,y=0.9526183602969864
a=wye,b=wye,i=3,x=0.20460330576630303,y=0.33831852551664776
a=wye,b=pan,i=5,x=0.5732889198020006,y=0.8636244699032729
a=zee,b=pan,i=6,x=0.5271261600918548,y=0.49322128674835697
a=zee,b=wye,i=8,x=0.5985540091064224,y=0.976181385699006

mlr sort -r a test/input/abixy
a=zee,b=pan,i=6,x=0.5271261600918548,y=0.49322128674835697
a=zee,b=wye,i=8,x=0.5985540091064224,y=0.976181385699006
a=wye,b=wye,i=3,x=0.20460330576630303,y=0.33831852551664776
a=wye,b=pan,i=5,x=0.5732889198020006,y=0.8636244699032729
a=pan,b=pan,i=1,x=0.3467901443380824,y=0.7268028627434533
a=pan,b=wye,i=10,x=0.5026260055412137,y=0.9526183602969864
a=hat,b=wye,i=9,x=0.03144187646093577,y=0.7495507603507059
a=eks,b=pan,i=2,x=0.7586799647899636,y=0.5221511083334797
a=eks,b=wye,i=4,x=0.38139939387114097,y=0.13418874328430463
a=eks,b=zee,i=7,x=0.6117840605678454,y=0.1878849191181694

mlr sort -f x test/input/abixy
a=hat,b=wye,i=9,x=0.03144187646093577,y=0.7495507603507059
a=wye,b=wye,i=3,x=0.20460330576630303,y=0.33831852551664776
a=pan,b=pan,i=1,x=0.3467901443380824,y=0.7268028627434533
a=eks,b=wye,i=4,x=0.38139939387114097,y=0.13418874328430463
a=pan,b=wye,i=10,x=0.5026260055412137,y=0.9526183602969864
a=zee,b=pan,i=6,x=0.5271261600918548,y=0.49322128674835697
a=wye,b=pan,i=5,x=0.5732889198020006,y=0.8636244699032729
a=zee,b=wye,i=8,x=0.5985540091064224,y=0.976181385699006
a=eks,b=zee,i=7,x=0.6117840605678454,y=0.1878849191181694
a=eks,b=pan,i=2,x=0.7586799647899636,y=0.5221511083334797

mlr sort -r x test/input/abixy
a=eks,b=pan,i=2,x=0.7586799647899636,y=0.5221511083334797
a=eks,b=zee,i=7,x=0.6117840605678454,y=0.1878849191181694
a=zee,b=wye,i=8,x=0.5985540091064224,y=0.976181385699006
a=wye,b=pan,i=5,x=0.5732889198020006,y=0.8636244699032729
a=zee,b=pan,i=6,x=0.5271261600918548,y=0.49322128674835697
a=pan,b=wye,i=10,x=0.5026260055412137,y=0.9526183602969864
a=eks,b=wye,i=4,x=0.38139939387114097,y=0.13418874328430463
a=pan,b=pan,i=1,x=0.3467901443380824,y=0.7268028627434533
a=wye,b=wye,i=3,x=0.20460330576630303,y=0.33831852551664776
a=hat,b=wye,i=9,x=0.03144187646093577,y=0.7495507603507059

mlr sort -nf x test/input/abixy
a=hat,b=wye,i=9,x=0.03144187646093577,y=0.7495507603507059
a=wye,b=wye,i=3,x=0.20460330576630303,y=0.33831852551664776
a=pan,b=pan,i=1,x=0.3467901443380824,y=0.7268028627434533
a=eks,b=wye,i=4,x=0.38139939387114097,y=0.13418874328430463
a=pan,b=wye,i=10,x=0.5026260055412137,y=0.9526183602969864
a=zee,b=pan,i=6,x=0.5271261600918548,y=0.49322128674835697
a=wye,b=pan,i=5,x=0.5732889198020006,y=0.8636244699032729
a=zee,b=wye,i=8,x=0.5985540091064224,y=0.976181385699006
a=eks,b=zee,i=7,x=0.6117840605678454,y=0.1878849191181694
a=eks,b=pan,i=2,x=0.7586799647899636,y=0.5221511083334797

mlr sort -nr x test/input/abixy
a=eks,b=pan,i=2,x=0.7586799647899636,y=0.5221511083334797
a=eks,b=zee,i=7,x=0.6117840605678454,y=0.1878849191181694
a=zee,b=wye,i=8,x=0.5985540091064224,y=0.976181385699006
a=wye,b=pan,i=5,x=0.5732889198020006,y=0.8636244699032729
a=zee,b=pan,i=6,x=0.5271261600918548,y=0.49322128674835697
a=pan,b=wye,i=10,x=0.5026260055412137,y=0.9526183602969864
a=eks,b=wye,i=4,x=0.38139939387114097,y=0.13418874328430463
a=pan,b=pan,i=1,x=0.3467901443380824,y=0.7268028627434533
a=wye,b=wye,i=3,x=0.20460330576630303,y=0.33831852551664776
a=hat,b=wye,i=9,x=0.03144187646093577,y=0.7495507603507059

mlr sort -f a,b test/input/abixy
a=eks,b=pan,i=2,x=0.7586799647899636,y=0.5221511083334797
a=eks,b=wye,i=4,x=0.38139939387114097,y=0.13418874328430463
a=eks,b=zee,i=7,x=0.6117840605678454,y=0.1878849191181694
a=hat,b=wye,i=9,x=0.03144187646093577,y=0.7495507603507059
a=pan,b=pan,i=1,x=0.3467901443380824,y=0.7268028627434533
a=pan,b=wye,i=10,x=0.5026260055412137,y=0.9526183602969864
a=wye,b=pan,i=5,x=0.5732889198020006,y=0.8636244699032729
a=wye,b=wye,i=3,x=0.20460330576630303,y=0.33831852551664776
a=zee,b=pan,i=6,x=0.5271261600918548,y=0.49322128674835697
a=zee,b=wye,i=8,x=0.5985540091064224,y=0.976181385699006

mlr sort -r a,b test/input/abixy
a=zee,b=wye,i=8,x=0.5985540091064224,y=0.976181385699006
a=zee,b=pan,i=6,x=0.5271261600918548,y=0.49322128674835697
a=wye,b=wye,i=3,x=0.20460330576630303,y=0.33831852551664776
a=wye,b=pan,i=5,x=0.5732889198020006,y=0.8636244699032729
a=pan,b=wye,i=10,x=0.5026260055412137,y=0.9526183602969864
a=pan,b=pan,i=1,x=0.3467901443380824,y=0.7268028627434533
a=hat,b=wye,i=9,x=0.03144187646093577,y=0.7495507603507059
a=eks,b=zee,i=7,x=0.6117840605678454,y=0.1878849191181694
a=eks,b=wye,i=4,x=0.38139939387114097,y=0.13418874328430463
a=eks,b=pan,i=2,x=0.7586799647899636,y=0.5221511083334797

mlr sort -f x,y test/input/abixy
a=hat,b=wye,i=9,x=0.03144187646093577,y=0.7495507603507059
a=wye,b=wye,i=3,x=0.20460330576630303,y=0.33831852551664776
a=pan,b=pan,i=1,x=0.3467901443380824,y=0.7268028627434533
a=eks,b=wye,i=4,x=0.38139939387114097,y=0.13418874328430463
a=pan,b=wye,i=10,x=0.5026260055412137,y=0.9526183602969864
a=zee,b=pan,i=6,x=0.5271261600918548,y=0.49322128674835697
a=wye,b=pan,i=5,x=0.5732889198020006,y=0.8636244699032729
a=zee,b=wye,i=8,x=0.5985540091064224,y=0.976181385699006
a=eks,b=zee,i=7,x=0.6117840605678454,y=0.1878849191181694
a=eks,b=pan,i=2,x=0.7586799647899636,y=0.5221511083334797

mlr sort -r x,y test/input/abixy
a=eks,b=pan,i=2,x=0.7586799647899636,y=0.5221511083334797
a=eks,b=zee,i=7,x=0.6117840605678454,y=0.1878849191181694
a=zee,b=wye,i=8,x=0.5985540091064224,y=0.976181385699006
a=wye,b=pan,i=5,x=0.5732889198020006,y=0.8636244699032729
a=zee,b=pan,i=6,x=0.5271261600918548,y=0.49322128674835697
a=pan,b=wye,i=10,x=0.5026260055412137,y=0.9526183602969864
a=eks,b=wye,i=4,x=0.38139939387114097,y=0.13418874328430463
a=pan,b=pan,i=1,x=0.3467901443380824,y=0.7268028627434533
a=wye,b=wye,i=3,x=0.20460330576630303,y=0.33831852551664776
a=hat,b=wye,i=9,x=0.03144187646093577,y=0.7495507603507059

mlr sort -nf x,y test/input/abixy
a=hat,b=wye,i=9,x=0.03144187646093577,y=0.7495507603507059
a=wye,b=wye,i=3,x=0.20460330576630303,y=0.33831852551664776
a=pan,b=pan,i=1,x=0.3467901443380824,y=0.7268028627434533
a=eks,b=wye,i=4,x=0.38139939387114097,y=0.13418874328430463
a=pan,b=wye,i=10,x=0.5026260055412137,y=0.9526183602969864
a=zee,b=pan,i=6,x=0.5271261600918548,y=0.49322128674835697
a=wye,b=pan,i=5,x=0.5732889198020006,y=0.8636244699032729
a=zee,b=wye,i=8,x=0.5985540091064224,y=0.976181385699006
a=eks,b=zee,i=7,x=0.6117840605678454,y=0.1878849191181694
a=eks,b=pan,i=2,x=0.7586799647899636,y=0.5221511083334797

mlr sort -nr x,y test/input/abixy
a=eks,b=pan,i=2,x=0.7586799647899636,y=0.5221511083334797
a=eks,b=zee,i=7,x=0.6117840605678454,y=0.1878849191181694
a=zee,b=wye,i=8,x=0.5985540091064224,y=0.976181385699006
a=wye,b=pan,i=5,x=0.5732889198020006,y=0.8636244699032729
a=zee,b=pan,i=6,x=0.5271261600918548,y=0.49322128674835697
a=pan,b=wye,i=10,x=0.5026260055412137,y=0.9526183602969864
a=eks,b=wye,i=4,x=0.38139939387114097,y=0.13418874328430463
a=pan,b=pan,i=1,x=0.3467901443380824,y=0.7268028627434533
a=wye,b=wye,i=3,x=0.20460330576630303,y=0.33831852551664776
a=hat,b=wye,i=9,x=0.03144187646093577,y=0.7495507603507059

mlr sort -f a -nr x test/input/abixy
a=eks,b=pan,i=2,x=0.7586799647899636,y=0.5221511083334797
a=eks,b=zee,i=7,x=0.6117840605678454,y=0.1878849191181694
a=eks,b=wye,i=4,x=0.38139939387114097,y=0.13418874328430463
a=hat,b=wye,i=9,x=0.03144187646093577,y=0.7495507603507059
a=pan,b=wye,i=10,x=0.5026260055412137,y=0.9526183602969864
a=pan,b=pan,i=1,x=0.3467901443380824,y=0.7268028627434533
a=wye,b=pan,i=5,x=0.5732889198020006,y=0.8636244699032729
a=wye,b=wye,i=3,x=0.20460330576630303,y=0.33831852551664776
a=zee,b=wye,i=8,x=0.5985540091064224,y=0.976181385699006
a=zee,b=pan,i=6,x=0.5271261600918548,y=0.49322128674835697

mlr sort -nr y -f a test/input/abixy
a=zee,b=wye,i=8,x=0.5985540091064224,y=0.976181385699006
a=pan,b=wye,i=10,x=0.5026260055412137,y=0.9526183602969864
a=wye,b=pan,i=5,x=0.5732889198020006,y=0.8636244699032729
a=hat,b=wye,i=9,x=0.03144187646093577,y=0.7495507603507059
a=pan,b=pan,i=1,x=0.3467901443380824,y=0.7268028627434533
a=eks,b=pan,i=2,x=0.7586799647899636,y=0.5221511083334797
a=zee,b=pan,i=6,x=0.5271261600918548,y=0.49322128674835697
a=wye,b=wye,i=3,x=0.20460330576630303,y=0.33831852551664776
a=eks,b=zee,i=7,x=0.6117840605678454,y=0.1878849191181694
a=eks,b=wye,i=4,x=0.38139939387114097,y=0.13418874328430463

mlr sort -f a -r b -nf x -nr y test/input/abixy
a=eks,b=zee,i=7,x=0.6117840605678454,y=0.1878849191181694
a=eks,b=wye,i=4,x=0.38139939387114097,y=0.13418874328430463
a=eks,b=pan,i=2,x=0.7586799647899636,y=0.5221511083334797
a=hat,b=wye,i=9,x=0.03144187646093577,y=0.7495507603507059
a=pan,b=wye,i=10,x=0.5026260055412137,y=0.9526183602969864
a=pan,b=pan,i=1,x=0.3467901443380824,y=0.7268028627434533
a=wye,b=wye,i=3,x=0.20460330576630303,y=0.33831852551664776
a=wye,b=pan,i=5,x=0.5732889198020006,y=0.8636244699032729
a=zee,b=wye,i=8,x=0.5985540091064224,y=0.976181385699006
a=zee,b=pan,i=6,x=0.5271261600918548,y=0.49322128674835697


================================================================
JOIN

mlr --opprint join -f test/input/joina.dkvp -l l -r r -j o test/input/joinb.dkvp
o x y
1 a s
2 b t
2 c t
2 d t
2 b v
2 c v
2 d v
3 e w
3 f w
3 e x
3 f x
3 e y
3 f y

mlr --opprint join -u -f test/input/joina.dkvp -l l -r r -j o test/input/joinb.dkvp
o x y
1 a s
2 b t
2 c t
2 d t
2 b v
2 c v
2 d v
3 e w
3 f w
3 e x
3 f x
3 e y
3 f y

mlr --opprint join --ul -f test/input/joina.dkvp -l l -r r -j o test/input/joinb.dkvp
o x y
1 a s
2 b t
2 c t
2 d t
2 b v
2 c v
2 d v
3 e w
3 f w
3 e x
3 f x
3 e y
3 f y

l x
4 g

mlr --opprint join -u --ul -f test/input/joina.dkvp -l l -r r -j o test/input/joinb.dkvp
o x y
1 a s
2 b t
2 c t
2 d t
2 b v
2 c v
2 d v
3 e w
3 f w
3 e x
3 f x
3 e y
3 f y

l x
4 g

mlr --opprint join --ur -f test/input/joina.dkvp -l l -r r -j o test/input/joinb.dkvp
o x y
1 a s
2 b t
2 c t
2 d t
2 b v
2 c v
2 d v
3 e w
3 f w
3 e x
3 f x
3 e y
3 f y

r y
5 z

mlr --opprint join -u --ur -f test/input/joina.dkvp -l l -r r -j o test/input/joinb.dkvp
o x y
1 a s
2 b t
2 c t
2 d t
2 b v
2 c v
2 d v
3 e w
3 f w
3 e x
3 f x
3 e y
3 f y

r y
5 z

mlr --opprint join --ul --ur -f test/input/joina.dkvp -l l -r r -j o test/input/joinb.dkvp
o x y
1 a s
2 b t
2 c t
2 d t
2 b v
2 c v
2 d v
3 e w
3 f w
3 e x
3 f x
3 e y
3 f y

l x
4 g

r y
5 z

mlr --opprint join -u --ul --ur -f test/input/joina.dkvp -l l -r r -j o test/input/joinb.dkvp
o x y
1 a s
2 b t
2 c t
2 d t
2 b v
2 c v
2 d v
3 e w
3 f w
3 e x
3 f x
3 e y
3 f y

r y
5 z

l x
4 g

mlr --opprint join --np --ul -f test/input/joina.dkvp -l l -r r -j o test/input/joinb.dkvp
l x
4 g

mlr --opprint join -u --np --ul -f test/input/joina.dkvp -l l -r r -j o test/input/joinb.dkvp
l x
4 g

mlr --opprint join --np --ur -f test/input/joina.dkvp -l l -r r -j o test/input/joinb.dkvp
r y
5 z

mlr --opprint join -u --np --ur -f test/input/joina.dkvp -l l -r r -j o test/input/joinb.dkvp
r y
5 z

mlr --opprint join --np --ul --ur -f test/input/joina.dkvp -l l -r r -j o test/input/joinb.dkvp
l x
4 g

r y
5 z

mlr --opprint join -u --np --ul --ur -f test/input/joina.dkvp -l l -r r -j o test/input/joinb.dkvp
r y
5 z

l x
4 g

mlr --opprint join -f /dev/null -l l -r r -j o test/input/joinb.dkvp

mlr --opprint join -u -f /dev/null -l l -r r -j o test/input/joinb.dkvp

mlr --opprint join --ul -f /dev/null -l l -r r -j o test/input/joinb.dkvp

mlr --opprint join -u --ul -f /dev/null -l l -r r -j o test/input/joinb.dkvp

mlr --opprint join --ur -f /dev/null -l l -r r -j o test/input/joinb.dkvp
r y
1 s
2 t
2 v
3 w
3 x
3 y
5 z

mlr --opprint join -u --ur -f /dev/null -l l -r r -j o test/input/joinb.dkvp
r y
1 s
2 t
2 v
3 w
3 x
3 y
5 z

mlr --opprint join --ul --ur -f /dev/null -l l -r r -j o test/input/joinb.dkvp
r y
1 s
2 t
2 v
3 w
3 x
3 y
5 z

mlr --opprint join -u --ul --ur -f /dev/null -l l -r r -j o test/input/joinb.dkvp
r y
1 s
2 t
2 v
3 w
3 x
3 y
5 z

mlr --opprint join --np --ul -f /dev/null -l l -r r -j o test/input/joinb.dkvp

mlr --opprint join -u --np --ul -f /dev/null -l l -r r -j o test/input/joinb.dkvp

mlr --opprint join --np --ur -f /dev/null -l l -r r -j o test/input/joinb.dkvp
r y
1 s
2 t
2 v
3 w
3 x
3 y
5 z

mlr --opprint join -u --np --ur -f /dev/null -l l -r r -j o test/input/joinb.dkvp
r y
1 s
2 t
2 v
3 w
3 x
3 y
5 z

mlr --opprint join --np --ul --ur -f /dev/null -l l -r r -j o test/input/joinb.dkvp
r y
1 s
2 t
2 v
3 w
3 x
3 y
5 z

mlr --opprint join -u --np --ul --ur -f /dev/null -l l -r r -j o test/input/joinb.dkvp
r y
1 s
2 t
2 v
3 w
3 x
3 y
5 z

mlr --opprint join -f test/input/joina.dkvp -l l -r r -j o /dev/null

mlr --opprint join -u -f test/input/joina.dkvp -l l -r r -j o /dev/null

mlr --opprint join --ul -f test/input/joina.dkvp -l l -r r -j o /dev/null
l x
1 a
2 b
2 c
2 d
3 e
3 f
4 g

mlr --opprint join -u --ul -f test/input/joina.dkvp -l l -r r -j o /dev/null
l x
1 a
2 b
2 c
2 d
3 e
3 f
4 g

mlr --opprint join --ur -f test/input/joina.dkvp -l l -r r -j o /dev/null

mlr --opprint join -u --ur -f test/input/joina.dkvp -l l -r r -j o /dev/null

mlr --opprint join --ul --ur -f test/input/joina.dkvp -l l -r r -j o /dev/null
l x
1 a
2 b
2 c
2 d
3 e
3 f
4 g

mlr --opprint join -u --ul --ur -f test/input/joina.dkvp -l l -r r -j o /dev/null
l x
1 a
2 b
2 c
2 d
3 e
3 f
4 g

mlr --opprint join --np --ul -f test/input/joina.dkvp -l l -r r -j o /dev/null
l x
1 a
2 b
2 c
2 d
3 e
3 f
4 g

mlr --opprint join -u --np --ul -f test/input/joina.dkvp -l l -r r -j o /dev/null
l x
1 a
2 b
2 c
2 d
3 e
3 f
4 g

mlr --opprint join --np --ur -f test/input/joina.dkvp -l l -r r -j o /dev/null

mlr --opprint join -u --np --ur -f test/input/joina.dkvp -l l -r r -j o /dev/null

mlr --opprint join --np --ul --ur -f test/input/joina.dkvp -l l -r r -j o /dev/null
l x
1 a
2 b
2 c
2 d
3 e
3 f
4 g

mlr --opprint join -u --np --ul --ur -f test/input/joina.dkvp -l l -r r -j o /dev/null
l x
1 a
2 b
2 c
2 d
3 e
3 f
4 g


================================================================
STATS

mlr count-distinct -f a,b test/input/small test/input/abixy
a=pan,b=pan,count=2
a=eks,b=pan,count=2
a=wye,b=wye,count=2
a=eks,b=wye,count=2
a=wye,b=pan,count=2
a=zee,b=pan,count=2
a=eks,b=zee,count=2
a=zee,b=wye,count=2
a=hat,b=wye,count=2
a=pan,b=wye,count=2

mlr --opprint stats1 -a mean,sum,count,min,max,mode -f i,x,y test/input/abixy
i_mean   i_sum     i_count i_min    i_max     i_mode x_mean   x_sum    x_count x_min    x_max    x_mode             y_mean   y_sum    y_count y_min    y_max    y_mode
5.500000 55.000000 10      1.000000 10.000000 1      0.453629 4.536294 10      0.031442 0.758680 0.3467901443380824 0.594454 5.944542 10      0.134189 0.976181 0.7268028627434533

mlr --opprint stats1 -a min,p10,p50,mode,p90,max -f i,x,y test/input/abixy
i_min    i_p10    i_p50    i_mode i_p90     i_max     x_min    x_p10    x_p50    x_mode             x_p90    x_max    y_min    y_p10    y_p50    y_mode             y_p90    y_max
1.000000 2.000000 6.000000 1      10.000000 10.000000 0.031442 0.204603 0.527126 0.3467901443380824 0.758680 0.758680 0.134189 0.187885 0.726803 0.7268028627434533 0.976181 0.976181

mlr --opprint stats1 -a mean,meaneb,stddev -f i,x,y test/input/abixy
i_mean   i_meaneb i_stddev x_mean   x_meaneb x_stddev y_mean   y_meaneb y_stddev
5.500000 0.957427 3.027650 0.453629 0.068157 0.215531 0.594454 0.096968 0.306639

mlr --opprint stats1 -a mean,sum,count,min,max,mode -f i,x,y -g a test/input/abixy
a   i_mean   i_sum     i_count i_min    i_max     i_mode x_mean   x_sum    x_count x_min    x_max    x_mode              y_mean   y_sum    y_count y_min    y_max    y_mode
pan 5.500000 11.000000 2       1.000000 10.000000 1      0.424708 0.849416 2       0.346790 0.502626 0.3467901443380824  0.839711 1.679421 2       0.726803 0.952618 0.7268028627434533
eks 4.333333 13.000000 3       2.000000 7.000000  2      0.583954 1.751863 3       0.381399 0.758680 0.7586799647899636  0.281408 0.844225 3       0.134189 0.522151 0.5221511083334797
wye 4.000000 8.000000  2       3.000000 5.000000  3      0.388946 0.777892 2       0.204603 0.573289 0.20460330576630303 0.600971 1.201943 2       0.338319 0.863624 0.33831852551664776
zee 7.000000 14.000000 2       6.000000 8.000000  6      0.562840 1.125680 2       0.527126 0.598554 0.5271261600918548  0.734701 1.469403 2       0.493221 0.976181 0.49322128674835697
hat 9.000000 9.000000  1       9.000000 9.000000  9      0.031442 0.031442 1       0.031442 0.031442 0.03144187646093577 0.749551 0.749551 1       0.749551 0.749551 0.7495507603507059

mlr --opprint stats1 -a min,p10,p50,mode,p90,max -f i,x,y -g a test/input/abixy
a   i_min    i_p10    i_p50     i_mode i_p90     i_max     x_min    x_p10    x_p50    x_mode              x_p90    x_max    y_min    y_p10    y_p50    y_mode              y_p90    y_max
pan 1.000000 1.000000 10.000000 1      10.000000 10.000000 0.346790 0.346790 0.502626 0.3467901443380824  0.502626 0.502626 0.726803 0.726803 0.952618 0.7268028627434533  0.952618 0.952618
eks 2.000000 2.000000 4.000000  2      7.000000  7.000000  0.381399 0.381399 0.611784 0.7586799647899636  0.758680 0.758680 0.134189 0.134189 0.187885 0.5221511083334797  0.522151 0.522151
wye 3.000000 3.000000 5.000000  3      5.000000  5.000000  0.204603 0.204603 0.573289 0.20460330576630303 0.573289 0.573289 0.338319 0.338319 0.863624 0.33831852551664776 0.863624 0.863624
zee 6.000000 6.000000 8.000000  6      8.000000  8.000000  0.527126 0.527126 0.598554 0.5271261600918548  0.598554 0.598554 0.493221 0.493221 0.976181 0.49322128674835697 0.976181 0.976181
hat 9.000000 9.000000 9.000000  9      9.000000  9.000000  0.031442 0.031442 0.031442 0.03144187646093577 0.031442 0.031442 0.749551 0.749551 0.749551 0.7495507603507059  0.749551 0.749551

mlr --opprint stats1 -a mean,meaneb,stddev -f i,x,y -g a test/input/abixy
a   i_mean   i_meaneb i_stddev x_mean   x_meaneb x_stddev y_mean   y_meaneb y_stddev
pan 5.500000 4.500000 6.363961 0.424708 0.077918 0.110193 0.839711 0.112908 0.159676
eks 4.333333 1.452966 2.516611 0.583954 0.109797 0.190174 0.281408 0.121365 0.210211
wye 4.000000 1.000000 1.414214 0.388946 0.184343 0.260700 0.600971 0.262653 0.371447
zee 7.000000 1.000000 1.414214 0.562840 0.035714 0.050507 0.734701 0.241480 0.341504
hat 9.000000 -        -        0.031442 -        -        0.749551 -        -

mlr --opprint stats1 -a mean,sum,count,min,max,mode -f i,x,y -g a,b test/input/abixy
a   b   i_mean    i_sum     i_count i_min     i_max     i_mode x_mean   x_sum    x_count x_min    x_max    x_mode              y_mean   y_sum    y_count y_min    y_max    y_mode
pan pan 1.000000  1.000000  1       1.000000  1.000000  1      0.346790 0.346790 1       0.346790 0.346790 0.3467901443380824  0.726803 0.726803 1       0.726803 0.726803 0.7268028627434533
eks pan 2.000000  2.000000  1       2.000000  2.000000  2      0.758680 0.758680 1       0.758680 0.758680 0.7586799647899636  0.522151 0.522151 1       0.522151 0.522151 0.5221511083334797
wye wye 3.000000  3.000000  1       3.000000  3.000000  3      0.204603 0.204603 1       0.204603 0.204603 0.20460330576630303 0.338319 0.338319 1       0.338319 0.338319 0.33831852551664776
eks wye 4.000000  4.000000  1       4.000000  4.000000  4      0.381399 0.381399 1       0.381399 0.381399 0.38139939387114097 0.134189 0.134189 1       0.134189 0.134189 0.13418874328430463
wye pan 5.000000  5.000000  1       5.000000  5.000000  5      0.573289 0.573289 1       0.573289 0.573289 0.5732889198020006  0.863624 0.863624 1       0.863624 0.863624 0.8636244699032729
zee pan 6.000000  6.000000  1       6.000000  6.000000  6      0.527126 0.527126 1       0.527126 0.527126 0.5271261600918548  0.493221 0.493221 1       0.493221 0.493221 0.49322128674835697
eks zee 7.000000  7.000000  1       7.000000  7.000000  7      0.611784 0.611784 1       0.611784 0.611784 0.6117840605678454  0.187885 0.187885 1       0.187885 0.187885 0.1878849191181694
zee wye 8.000000  8.000000  1       8.000000  8.000000  8      0.598554 0.598554 1       0.598554 0.598554 0.5985540091064224  0.976181 0.976181 1       0.976181 0.976181 0.976181385699006
hat wye 9.000000  9.000000  1       9.000000  9.000000  9      0.031442 0.031442 1       0.031442 0.031442 0.03144187646093577 0.749551 0.749551 1       0.749551 0.749551 0.7495507603507059
pan wye 10.000000 10.000000 1       10.000000 10.000000 10     0.502626 0.502626 1       0.502626 0.502626 0.5026260055412137  0.952618 0.952618 1       0.952618 0.952618 0.9526183602969864

mlr --opprint stats1 -a min,p10,p50,mode,p90,max -f i,x,y -g a,b test/input/abixy
a   b   i_min     i_p10     i_p50     i_mode i_p90     i_max     x_min    x_p10    x_p50    x_mode              x_p90    x_max    y_min    y_p10    y_p50    y_mode              y_p90    y_max
pan pan 1.000000  1.000000  1.000000  1      1.000000  1.000000  0.346790 0.346790 0.346790 0.3467901443380824  0.346790 0.346790 0.726803 0.726803 0.726803 0.7268028627434533  0.726803 0.726803
eks pan 2.000000  2.000000  2.000000  2      2.000000  2.000000  0.758680 0.758680 0.758680 0.7586799647899636  0.758680 0.758680 0.522151 0.522151 0.522151 0.5221511083334797  0.522151 0.522151
wye wye 3.000000  3.000000  3.000000  3      3.000000  3.000000  0.204603 0.204603 0.204603 0.20460330576630303 0.204603 0.204603 0.338319 0.338319 0.338319 0.33831852551664776 0.338319 0.338319
eks wye 4.000000  4.000000  4.000000  4      4.000000  4.000000  0.381399 0.381399 0.381399 0.38139939387114097 0.381399 0.381399 0.134189 0.134189 0.134189 0.13418874328430463 0.134189 0.134189
wye pan 5.000000  5.000000  5.000000  5      5.000000  5.000000  0.573289 0.573289 0.573289 0.5732889198020006  0.573289 0.573289 0.863624 0.863624 0.863624 0.8636244699032729  0.863624 0.863624
zee pan 6.000000  6.000000  6.000000  6      6.000000  6.000000  0.527126 0.527126 0.527126 0.5271261600918548  0.527126 0.527126 0.493221 0.493221 0.493221 0.49322128674835697 0.493221 0.493221
eks zee 7.000000  7.000000  7.000000  7      7.000000  7.000000  0.611784 0.611784 0.611784 0.6117840605678454  0.611784 0.611784 0.187885 0.187885 0.187885 0.1878849191181694  0.187885 0.187885
zee wye 8.000000  8.000000  8.000000  8      8.000000  8.000000  0.598554 0.598554 0.598554 0.5985540091064224  0.598554 0.598554 0.976181 0.976181 0.976181 0.976181385699006   0.976181 0.976181
hat wye 9.000000  9.000000  9.000000  9      9.000000  9.000000  0.031442 0.031442 0.031442 0.03144187646093577 0.031442 0.031442 0.749551 0.749551 0.749551 0.7495507603507059  0.749551 0.749551
pan wye 10.000000 10.000000 10.000000 10     10.000000 10.000000 0.502626 0.502626 0.502626 0.5026260055412137  0.502626 0.502626 0.952618 0.952618 0.952618 0.9526183602969864  0.952618 0.952618

mlr --opprint stats1 -a mean,meaneb,stddev -f i,x,y -g a,b test/input/abixy
a   b   i_mean    i_meaneb i_stddev x_mean   x_meaneb x_stddev y_mean   y_meaneb y_stddev
pan pan 1.000000  -        -        0.346790 -        -        0.726803 -        -
eks pan 2.000000  -        -        0.758680 -        -        0.522151 -        -
wye wye 3.000000  -        -        0.204603 -        -        0.338319 -        -
eks wye 4.000000  -        -        0.381399 -        -        0.134189 -        -
wye pan 5.000000  -        -        0.573289 -        -        0.863624 -        -
zee pan 6.000000  -        -        0.527126 -        -        0.493221 -        -
eks zee 7.000000  -        -        0.611784 -        -        0.187885 -        -
zee wye 8.000000  -        -        0.598554 -        -        0.976181 -        -
hat wye 9.000000  -        -        0.031442 -        -        0.749551 -        -
pan wye 10.000000 -        -        0.502626 -        -        0.952618 -        -

mlr --opprint stats2 -a linreg-ols,linreg-pca,r2,corr,cov -f x,y,xy,y2,x2,x2 test/input/abixy-wide
x_y_ols_m x_y_ols_b x_y_ols_n x_y_pca_m x_y_pca_b x_y_pca_n x_y_pca_quality x_y_r2   x_y_corr x_y_cov  xy_y2_ols_m xy_y2_ols_b xy_y2_ols_n xy_y2_pca_m xy_y2_pca_b xy_y2_pca_n xy_y2_pca_quality xy_y2_r2 xy_y2_corr xy_y2_cov x2_x2_ols_m x2_x2_ols_b x2_x2_ols_n x2_x2_pca_m x2_x2_pca_b x2_x2_pca_n x2_x2_pca_quality x2_x2_r2 x2_x2_corr x2_x2_cov
0.028351  0.487644  2000      1.332924  -0.170590 2000      0.056909        0.000791 0.028120 0.002330 0.893610    0.107060    2000        1.529534    -0.055477   2000        0.824336          0.447971 0.669306   0.045036  1.000000    0.000000    2000        1.000000    0.000000    2000        1.000000          1.000000 1.000000   0.087709

mlr --opprint stats2 -a linreg-ols,linreg-pca,r2,corr,cov -f x,y,xy,y2,x2,x2 -g a,b test/input/abixy-wide
a   b   x_y_ols_m x_y_ols_b x_y_ols_n x_y_pca_m x_y_pca_b x_y_pca_n x_y_pca_quality x_y_r2   x_y_corr  x_y_cov   xy_y2_ols_m xy_y2_ols_b xy_y2_ols_n xy_y2_pca_m xy_y2_pca_b xy_y2_pca_n xy_y2_pca_quality xy_y2_r2 xy_y2_corr xy_y2_cov x2_x2_ols_m x2_x2_ols_b x2_x2_ols_n x2_x2_pca_m x2_x2_pca_b x2_x2_pca_n x2_x2_pca_quality x2_x2_r2 x2_x2_corr x2_x2_cov
cat pan 0.054420  0.481777  89        3.636062  -1.221602 89        0.177683        0.002504 0.050036  0.003777  0.950908    0.105754    89          1.715574    -0.081719   89          0.830612          0.435336 0.659800   0.041616  1.000000    0.000000    89          1.000000    0.000000    89          1.000000          1.000000 1.000000   0.066303
pan wye -0.145486 0.584799  78        -1.340927 1.199920  78        0.254025        0.019479 -0.139568 -0.012683 0.908151    0.126628    78          1.595150    -0.045034   78          0.824114          0.438850 0.662457   0.046203  1.000000    0.000000    78          1.000000    0.000000    78          1.000000          1.000000 1.000000   0.093192
wye cat 0.185913  0.377639  74        1.135325  -0.145894 74        0.309499        0.033002 0.181665  0.014494  0.969266    0.040602    74          1.406365    -0.081379   74          0.868480          0.561236 0.749157   0.052090  1.000000    0.000000    74          1.000000    0.000000    74          1.000000          1.000000 1.000000   0.086883
dog hat 0.100096  0.448757  88        0.810749  0.097346  88        0.189256        0.010462 0.102283  0.008036  0.919149    0.090504    88          1.425774    -0.038344   88          0.846209          0.507155 0.712148   0.045034  1.000000    0.000000    88          1.000000    0.000000    88          1.000000          1.000000 1.000000   0.081226
dog pan -0.066834 0.590647  87        -0.254112 0.688837  87        0.275316        0.005924 -0.076969 -0.005709 0.726118    0.164937    87          1.566309    -0.075073   87          0.749025          0.315011 0.561259   0.034107  1.000000    0.000000    87          1.000000    0.000000    87          1.000000          1.000000 1.000000   0.098975
pan pan 0.094932  0.461566  77        0.672369  0.189898  77        0.192719        0.009768 0.098832  0.007175  0.822261    0.123441    77          1.312543    0.003200    77          0.820351          0.465390 0.682195   0.039784  1.000000    0.000000    77          1.000000    0.000000    77          1.000000          1.000000 1.000000   0.080908
hat hat 0.043668  0.405219  88        10.170494 -5.125282 88        0.310513        0.001324 0.036392  0.003037  1.128896    0.015188    88          1.414166    -0.052514   88          0.922308          0.708725 0.841858   0.060975  1.000000    0.000000    88          1.000000    0.000000    88          1.000000          1.000000 1.000000   0.084636
wye hat 0.043018  0.496029  87        0.254879  0.395780  87        0.177794        0.002197 0.046876  0.004023  0.720402    0.165623    87          1.376136    0.002792    87          0.760716          0.353558 0.594608   0.038763  1.000000    0.000000    87          1.000000    0.000000    87          1.000000          1.000000 1.000000   0.091675
pan hat 0.120797  0.448197  67        1.597359  -0.325695 67        0.225137        0.013060 0.114278  0.008987  0.962678    0.076920    67          1.285796    -0.012566   67          0.887704          0.622353 0.788893   0.054965  1.000000    0.000000    67          1.000000    0.000000    67          1.000000          1.000000 1.000000   0.079553
cat hat 0.172391  0.464384  90        0.959329  0.086790  90        0.296109        0.030150 0.173639  0.015030  0.904257    0.133482    90          1.415658    -0.008369   90          0.841567          0.498171 0.705812   0.055626  1.000000    0.000000    90          1.000000    0.000000    90          1.000000          1.000000 1.000000   0.089895
hat wye -0.022975 0.496361  70        -1.765884 1.344268  70        0.051493        0.000514 -0.022665 -0.002000 0.971929    0.096088    70          1.989422    -0.142072   70          0.825656          0.386354 0.621574   0.040126  1.000000    0.000000    70          1.000000    0.000000    70          1.000000          1.000000 1.000000   0.075309
dog dog 0.078397  0.489236  87        0.354494  0.351041  87        0.242210        0.007619 0.087288  0.008214  0.776967    0.150999    87          1.354405    -0.006432   87          0.792265          0.408257 0.638950   0.049648  1.000000    0.000000    87          1.000000    0.000000    87          1.000000          1.000000 1.000000   0.106525
wye dog 0.116403  0.425576  76        2.367821  -0.777734 76        0.254607        0.011048 0.105109  0.007867  0.925781    0.071192    76          1.453590    -0.070509   76          0.845204          0.501559 0.708208   0.046440  1.000000    0.000000    76          1.000000    0.000000    76          1.000000          1.000000 1.000000   0.081433
wye wye -0.188354 0.613934  67        -1.433772 1.217887  67        0.316070        0.031156 -0.176512 -0.015876 0.876717    0.159179    67          2.044493    -0.118503   67          0.795455          0.325193 0.570257   0.042026  1.000000    0.000000    67          1.000000    0.000000    67          1.000000          1.000000 1.000000   0.087513
dog wye 0.029527  0.502643  79        0.496713  0.282511  79        0.073039        0.000913 0.030211  0.002391  0.904925    0.120816    79          1.609123    -0.052245   79          0.821822          0.432413 0.657581   0.042857  1.000000    0.000000    79          1.000000    0.000000    79          1.000000          1.000000 1.000000   0.083924
cat dog 0.057573  0.408644  78        0.728479  0.071114  78        0.116103        0.003442 0.058671  0.005320  0.884325    0.079999    78          1.418207    -0.040344   78          0.832998          0.479596 0.692528   0.044762  1.000000    0.000000    78          1.000000    0.000000    78          1.000000          1.000000 1.000000   0.098206
hat pan -0.154393 0.564981  85        -0.845852 0.911026  85        0.276955        0.025143 -0.158566 -0.012756 0.911165    0.104362    85          1.763740    -0.092987   85          0.814584          0.397150 0.630199   0.035622  1.000000    0.000000    85          1.000000    0.000000    85          1.000000          1.000000 1.000000   0.087879
cat wye -0.014851 0.564875  77        -0.572708 0.892322  77        0.034146        0.000224 -0.014982 -0.000966 0.878820    0.086362    77          1.447244    -0.098657   77          0.827119          0.463961 0.681147   0.041096  1.000000    0.000000    77          1.000000    0.000000    77          1.000000          1.000000 1.000000   0.081922
hat cat -0.022859 0.498539  88        -0.156242 0.565723  88        0.149344        0.000610 -0.024689 -0.002116 0.840965    0.111121    88          1.663518    -0.088942   88          0.793883          0.373515 0.611158   0.036575  1.000000    0.000000    88          1.000000    0.000000    88          1.000000          1.000000 1.000000   0.093075
dog cat 0.104057  0.428559  83        2.712382  -1.005787 83        0.250036        0.008705 0.093300  0.007122  1.080443    0.023866    83          1.653922    -0.133367   83          0.875586          0.547103 0.739664   0.050357  1.000000    0.000000    83          1.000000    0.000000    83          1.000000          1.000000 1.000000   0.075381
hat dog 0.041849  0.427228  78        0.403977  0.254919  78        0.118494        0.001918 0.043789  0.003856  0.776135    0.114930    78          1.475403    -0.036508   78          0.779056          0.372058 0.609966   0.040583  1.000000    0.000000    78          1.000000    0.000000    78          1.000000          1.000000 1.000000   0.104033
pan dog 0.119510  0.467833  73        2.492496  -0.761490 73        0.266455        0.011427 0.106896  0.009302  0.948592    0.107556    73          1.408389    -0.022846   73          0.860243          0.541263 0.735706   0.056609  1.000000    0.000000    73          1.000000    0.000000    73          1.000000          1.000000 1.000000   0.088101
cat cat 0.016257  0.425410  79        0.432946  0.225535  79        0.044275        0.000273 0.016510  0.001350  0.930954    0.072476    79          1.624993    -0.072669   79          0.830029          0.446764 0.668404   0.036267  1.000000    0.000000    79          1.000000    0.000000    79          1.000000          1.000000 1.000000   0.086429
pan cat -0.188523 0.616919  89        -0.898665 0.953923  89        0.324264        0.037036 -0.192447 -0.016206 0.781770    0.176617    89          2.020454    -0.113587   89          0.762332          0.278739 0.527958   0.032984  1.000000    0.000000    89          1.000000    0.000000    89          1.000000          1.000000 1.000000   0.093193
wye pan 0.229443  0.444446  66        1.313689  -0.098124 66        0.365811        0.046722 0.216152  0.020367  0.887659    0.145052    66          1.471906    -0.030176   66          0.827911          0.462545 0.680107   0.064496  1.000000    0.000000    66          1.000000    0.000000    66          1.000000          1.000000 1.000000   0.103497

mlr --opprint step -a rsum,delta,counter -f x,y test/input/abixy
a   b   i  x                   y                   x_rsum   x_delta   x_counter y_rsum   y_delta   y_counter
pan pan 1  0.3467901443380824  0.7268028627434533  0.346790 0.346790  1         0.726803 0.726803  1
eks pan 2  0.7586799647899636  0.5221511083334797  1.105470 0.411890  2         1.248954 -0.204652 2
wye wye 3  0.20460330576630303 0.33831852551664776 1.310073 -0.554077 3         1.587272 -0.183833 3
eks wye 4  0.38139939387114097 0.13418874328430463 1.691473 0.176796  4         1.721461 -0.204130 4
wye pan 5  0.5732889198020006  0.8636244699032729  2.264762 0.191890  5         2.585086 0.729436  5
zee pan 6  0.5271261600918548  0.49322128674835697 2.791888 -0.046163 6         3.078307 -0.370403 6
eks zee 7  0.6117840605678454  0.1878849191181694  3.403672 0.084658  7         3.266192 -0.305336 7
zee wye 8  0.5985540091064224  0.976181385699006   4.002226 -0.013230 8         4.242373 0.788296  8
hat wye 9  0.03144187646093577 0.7495507603507059  4.033668 -0.567112 9         4.991924 -0.226631 9
pan wye 10 0.5026260055412137  0.9526183602969864  4.536294 0.471184  10        5.944542 0.203068  10

mlr --opprint step -a rsum,delta,counter -f x,y -g a test/input/abixy
a   b   i  x                   y                   x_rsum   x_delta   x_counter y_rsum   y_delta   y_counter
pan pan 1  0.3467901443380824  0.7268028627434533  0.346790 0.346790  1         0.726803 0.726803  1
eks pan 2  0.7586799647899636  0.5221511083334797  0.758680 0.758680  1         0.522151 0.522151  1
wye wye 3  0.20460330576630303 0.33831852551664776 0.204603 0.204603  1         0.338319 0.338319  1
eks wye 4  0.38139939387114097 0.13418874328430463 1.140079 -0.377281 2         0.656340 -0.387962 2
wye pan 5  0.5732889198020006  0.8636244699032729  0.777892 0.368686  2         1.201943 0.525306  2
zee pan 6  0.5271261600918548  0.49322128674835697 0.527126 0.527126  1         0.493221 0.493221  1
eks zee 7  0.6117840605678454  0.1878849191181694  1.751863 0.230385  3         0.844225 0.053696  3
zee wye 8  0.5985540091064224  0.976181385699006   1.125680 0.071428  2         1.469403 0.482960  2
hat wye 9  0.03144187646093577 0.7495507603507059  0.031442 0.031442  1         0.749551 0.749551  1
pan wye 10 0.5026260055412137  0.9526183602969864  0.849416 0.155836  2         1.679421 0.225815  2

mlr --opprint histogram -f x,y --lo 0 --hi 1 --nbins 20 test/input/small
bin_lo   bin_hi   x_count y_count
0.000000 0.050000 1       0
0.050000 0.100000 0       0
0.100000 0.150000 0       1
0.150000 0.200000 0       1
0.200000 0.250000 1       0
0.250000 0.300000 0       0
0.300000 0.350000 1       1
0.350000 0.400000 1       0
0.400000 0.450000 0       0
0.450000 0.500000 0       1
0.500000 0.550000 2       1
0.550000 0.600000 2       0
0.600000 0.650000 1       0
0.650000 0.700000 0       0
0.700000 0.750000 0       2
0.750000 0.800000 1       0
0.800000 0.850000 0       0
0.850000 0.900000 0       1
0.900000 0.950000 0       0
0.950000 1.000000 0       2


================================================================
DSLs

mlr filter $x>.3 test/input/abixy
a=pan,b=pan,i=1,x=0.3467901443380824,y=0.7268028627434533
a=eks,b=pan,i=2,x=0.7586799647899636,y=0.5221511083334797
a=eks,b=wye,i=4,x=0.38139939387114097,y=0.13418874328430463
a=wye,b=pan,i=5,x=0.5732889198020006,y=0.8636244699032729
a=zee,b=pan,i=6,x=0.5271261600918548,y=0.49322128674835697
a=eks,b=zee,i=7,x=0.6117840605678454,y=0.1878849191181694
a=zee,b=wye,i=8,x=0.5985540091064224,y=0.976181385699006
a=pan,b=wye,i=10,x=0.5026260055412137,y=0.9526183602969864

mlr filter $x>0.3 test/input/abixy
a=pan,b=pan,i=1,x=0.3467901443380824,y=0.7268028627434533
a=eks,b=pan,i=2,x=0.7586799647899636,y=0.5221511083334797
a=eks,b=wye,i=4,x=0.38139939387114097,y=0.13418874328430463
a=wye,b=pan,i=5,x=0.5732889198020006,y=0.8636244699032729
a=zee,b=pan,i=6,x=0.5271261600918548,y=0.49322128674835697
a=eks,b=zee,i=7,x=0.6117840605678454,y=0.1878849191181694
a=zee,b=wye,i=8,x=0.5985540091064224,y=0.976181385699006
a=pan,b=wye,i=10,x=0.5026260055412137,y=0.9526183602969864

mlr filter $x>0.3 && $y>0.3 test/input/abixy
a=pan,b=pan,i=1,x=0.3467901443380824,y=0.7268028627434533
a=eks,b=pan,i=2,x=0.7586799647899636,y=0.5221511083334797
a=wye,b=pan,i=5,x=0.5732889198020006,y=0.8636244699032729
a=zee,b=pan,i=6,x=0.5271261600918548,y=0.49322128674835697
a=zee,b=wye,i=8,x=0.5985540091064224,y=0.976181385699006
a=pan,b=wye,i=10,x=0.5026260055412137,y=0.9526183602969864

mlr filter $x>0.3 || $y>0.3 test/input/abixy
a=pan,b=pan,i=1,x=0.3467901443380824,y=0.7268028627434533
a=eks,b=pan,i=2,x=0.7586799647899636,y=0.5221511083334797
a=wye,b=wye,i=3,x=0.20460330576630303,y=0.33831852551664776
a=eks,b=wye,i=4,x=0.38139939387114097,y=0.13418874328430463
a=wye,b=pan,i=5,x=0.5732889198020006,y=0.8636244699032729
a=zee,b=pan,i=6,x=0.5271261600918548,y=0.49322128674835697
a=eks,b=zee,i=7,x=0.6117840605678454,y=0.1878849191181694
a=zee,b=wye,i=8,x=0.5985540091064224,y=0.976181385699006
a=hat,b=wye,i=9,x=0.03144187646093577,y=0.7495507603507059
a=pan,b=wye,i=10,x=0.5026260055412137,y=0.9526183602969864

mlr filter NR>=4 && NR <= 7 test/input/abixy
a=eks,b=wye,i=4,x=0.38139939387114097,y=0.13418874328430463
a=wye,b=pan,i=5,x=0.5732889198020006,y=0.8636244699032729
a=zee,b=pan,i=6,x=0.5271261600918548,y=0.49322128674835697
a=eks,b=zee,i=7,x=0.6117840605678454,y=0.1878849191181694

mlr filter $nosuchfield>.3 test/input/abixy

mlr put $x2 = $x**2 test/input/abixy
a=pan,b=pan,i=1,x=0.3467901443380824,y=0.7268028627434533,x2=0.120263
a=eks,b=pan,i=2,x=0.7586799647899636,y=0.5221511083334797,x2=0.575595
a=wye,b=wye,i=3,x=0.20460330576630303,y=0.33831852551664776,x2=0.041863
a=eks,b=wye,i=4,x=0.38139939387114097,y=0.13418874328430463,x2=0.145465
a=wye,b=pan,i=5,x=0.5732889198020006,y=0.8636244699032729,x2=0.328660
a=zee,b=pan,i=6,x=0.5271261600918548,y=0.49322128674835697,x2=0.277862
a=eks,b=zee,i=7,x=0.6117840605678454,y=0.1878849191181694,x2=0.374280
a=zee,b=wye,i=8,x=0.5985540091064224,y=0.976181385699006,x2=0.358267
a=hat,b=wye,i=9,x=0.03144187646093577,y=0.7495507603507059,x2=0.000989
a=pan,b=wye,i=10,x=0.5026260055412137,y=0.9526183602969864,x2=0.252633

mlr put $z = -0.024*$x+0.13 test/input/abixy
a=pan,b=pan,i=1,x=0.3467901443380824,y=0.7268028627434533,z=0.121677
a=eks,b=pan,i=2,x=0.7586799647899636,y=0.5221511083334797,z=0.111792
a=wye,b=wye,i=3,x=0.20460330576630303,y=0.33831852551664776,z=0.125090
a=eks,b=wye,i=4,x=0.38139939387114097,y=0.13418874328430463,z=0.120846
a=wye,b=pan,i=5,x=0.5732889198020006,y=0.8636244699032729,z=0.116241
a=zee,b=pan,i=6,x=0.5271261600918548,y=0.49322128674835697,z=0.117349
a=eks,b=zee,i=7,x=0.6117840605678454,y=0.1878849191181694,z=0.115317
a=zee,b=wye,i=8,x=0.5985540091064224,y=0.976181385699006,z=0.115635
a=hat,b=wye,i=9,x=0.03144187646093577,y=0.7495507603507059,z=0.129245
a=pan,b=wye,i=10,x=0.5026260055412137,y=0.9526183602969864,z=0.117937

mlr put $c = $a . $b test/input/abixy
a=pan,b=pan,i=1,x=0.3467901443380824,y=0.7268028627434533,c=panpan
a=eks,b=pan,i=2,x=0.7586799647899636,y=0.5221511083334797,c=ekspan
a=wye,b=wye,i=3,x=0.20460330576630303,y=0.33831852551664776,c=wyewye
a=eks,b=wye,i=4,x=0.38139939387114097,y=0.13418874328430463,c=ekswye
a=wye,b=pan,i=5,x=0.5732889198020006,y=0.8636244699032729,c=wyepan
a=zee,b=pan,i=6,x=0.5271261600918548,y=0.49322128674835697,c=zeepan
a=eks,b=zee,i=7,x=0.6117840605678454,y=0.1878849191181694,c=ekszee
a=zee,b=wye,i=8,x=0.5985540091064224,y=0.976181385699006,c=zeewye
a=hat,b=wye,i=9,x=0.03144187646093577,y=0.7495507603507059,c=hatwye
a=pan,b=wye,i=10,x=0.5026260055412137,y=0.9526183602969864,c=panwye

mlr --opprint put $nr=NR;$fnr=FNR;$nf=NF;$filenum=FILENUM test/input/abixy test/input/abixy
a   b   i  x                   y                   nr fnr nf filenum
pan pan 1  0.3467901443380824  0.7268028627434533  1  1   7  1
eks pan 2  0.7586799647899636  0.5221511083334797  2  2   7  1
wye wye 3  0.20460330576630303 0.33831852551664776 3  3   7  1
eks wye 4  0.38139939387114097 0.13418874328430463 4  4   7  1
wye pan 5  0.5732889198020006  0.8636244699032729  5  5   7  1
zee pan 6  0.5271261600918548  0.49322128674835697 6  6   7  1
eks zee 7  0.6117840605678454  0.1878849191181694  7  7   7  1
zee wye 8  0.5985540091064224  0.976181385699006   8  8   7  1
hat wye 9  0.03144187646093577 0.7495507603507059  9  9   7  1
pan wye 10 0.5026260055412137  0.9526183602969864  10 10  7  1
pan pan 1  0.3467901443380824  0.7268028627434533  11 1   7  2
eks pan 2  0.7586799647899636  0.5221511083334797  12 2   7  2
wye wye 3  0.20460330576630303 0.33831852551664776 13 3   7  2
eks wye 4  0.38139939387114097 0.13418874328430463 14 4   7  2
wye pan 5  0.5732889198020006  0.8636244699032729  15 5   7  2
zee pan 6  0.5271261600918548  0.49322128674835697 16 6   7  2
eks zee 7  0.6117840605678454  0.1878849191181694  17 7   7  2
zee wye 8  0.5985540091064224  0.976181385699006   18 8   7  2
hat wye 9  0.03144187646093577 0.7495507603507059  19 9   7  2
pan wye 10 0.5026260055412137  0.9526183602969864  20 10  7  2


================================================================
OPERATOR PRECEDENCE AND ASSOCIATIVITY

mlr put -v $x=$a+$b+$c /dev/null
= (operator):
    x (field_name).
    + (operator):
        + (operator):
            a (field_name).
            b (field_name).
        c (field_name).

mlr put -v $x=$a+$b-$c /dev/null
= (operator):
    x (field_name).
    - (operator):
        + (operator):
            a (field_name).
            b (field_name).
        c (field_name).

mlr put -v $x=$a-$b-$c /dev/null
= (operator):
    x (field_name).
    - (operator):
        - (operator):
            a (field_name).
            b (field_name).
        c (field_name).

mlr put -v $x=$a-$b+$c /dev/null
= (operator):
    x (field_name).
    + (operator):
        - (operator):
            a (field_name).
            b (field_name).
        c (field_name).

mlr put -v $x=$a*$b*$c /dev/null
= (operator):
    x (field_name).
    * (operator):
        * (operator):
            a (field_name).
            b (field_name).
        c (field_name).

mlr put -v $x=$a*$b/$c /dev/null
= (operator):
    x (field_name).
    / (operator):
        * (operator):
            a (field_name).
            b (field_name).
        c (field_name).

mlr put -v $x=$a/$b/$c /dev/null
= (operator):
    x (field_name).
    / (operator):
        / (operator):
            a (field_name).
            b (field_name).
        c (field_name).

mlr put -v $x=$a/$b*$c /dev/null
= (operator):
    x (field_name).
    * (operator):
        / (operator):
            a (field_name).
            b (field_name).
        c (field_name).

mlr put -v $x=$a+$b+$c /dev/null
= (operator):
    x (field_name).
    + (operator):
        + (operator):
            a (field_name).
            b (field_name).
        c (field_name).

mlr put -v $x=$a+$b*$c /dev/null
= (operator):
    x (field_name).
    + (operator):
        a (field_name).
        * (operator):
            b (field_name).
            c (field_name).

mlr put -v $x=$a*$b*$c /dev/null
= (operator):
    x (field_name).
    * (operator):
        * (operator):
            a (field_name).
            b (field_name).
        c (field_name).

mlr put -v $x=$a*$b+$c /dev/null
= (operator):
    x (field_name).
    + (operator):
        * (operator):
            a (field_name).
            b (field_name).
        c (field_name).

mlr put -v $x=$a+$b+$c /dev/null
= (operator):
    x (field_name).
    + (operator):
        + (operator):
            a (field_name).
            b (field_name).
        c (field_name).

mlr put -v $x=$a+$b**$c /dev/null
= (operator):
    x (field_name).
    + (operator):
        a (field_name).
        ** (operator):
            b (field_name).
            c (field_name).

mlr put -v $x=$a**$b**$c /dev/null
= (operator):
    x (field_name).
    ** (operator):
        a (field_name).
        ** (operator):
            b (field_name).
            c (field_name).

mlr put -v $x=$a**$b+$c /dev/null
= (operator):
    x (field_name).
    + (operator):
        ** (operator):
            a (field_name).
            b (field_name).
        c (field_name).

mlr put -v $x=$a.$b.$c /dev/null
= (operator):
    x (field_name).
    . (operator):
        . (operator):
            a (field_name).
            b (field_name).
        c (field_name).

mlr put -v $x=-$a+$b*$c /dev/null
= (operator):
    x (field_name).
    + (operator):
        - (operator):
            a (field_name).
        * (operator):
            b (field_name).
            c (field_name).

mlr put -v $x=-$a*$b+$c /dev/null
= (operator):
    x (field_name).
    + (operator):
        * (operator):
            - (operator):
                a (field_name).
            b (field_name).
        c (field_name).

mlr put -v $x=$a+-$b*$c /dev/null
= (operator):
    x (field_name).
    + (operator):
        a (field_name).
        * (operator):
            - (operator):
                b (field_name).
            c (field_name).

mlr put -v $x=$a*-$b+$c /dev/null
= (operator):
    x (field_name).
    + (operator):
        * (operator):
            a (field_name).
            - (operator):
                b (field_name).
        c (field_name).

mlr put -v $x=$a+$b*-$c /dev/null
= (operator):
    x (field_name).
    + (operator):
        a (field_name).
        * (operator):
            b (field_name).
            - (operator):
                c (field_name).

mlr put -v $x=$a*$b+-$c /dev/null
= (operator):
    x (field_name).
    + (operator):
        * (operator):
            a (field_name).
            b (field_name).
        - (operator):
            c (field_name).

mlr filter -v $a==1 && $b == 1 && $c == 1 /dev/null
&& (operator):
    && (operator):
        == (operator):
            a (field_name).
            1 (literal).
        == (operator):
            b (field_name).
            1 (literal).
    == (operator):
        c (field_name).
        1 (literal).

mlr filter -v $a==1 || $b == 1 && $c == 1 /dev/null
|| (operator):
    == (operator):
        a (field_name).
        1 (literal).
    && (operator):
        == (operator):
            b (field_name).
            1 (literal).
        == (operator):
            c (field_name).
            1 (literal).

mlr filter -v $a==1 || $b == 1 || $c == 1 /dev/null
|| (operator):
    || (operator):
        == (operator):
            a (field_name).
            1 (literal).
        == (operator):
            b (field_name).
            1 (literal).
    == (operator):
        c (field_name).
        1 (literal).

mlr filter -v $a==1 && $b == 1 || $c == 1 /dev/null
|| (operator):
    && (operator):
        == (operator):
            a (field_name).
            1 (literal).
        == (operator):
            b (field_name).
            1 (literal).
    == (operator):
        c (field_name).
        1 (literal).

mlr filter -v $x<$a*$b*$c /dev/null
< (operator):
    x (field_name).
    * (operator):
        * (operator):
            a (field_name).
            b (field_name).
        c (field_name).

mlr filter -v $x<$a*$b/$c /dev/null
< (operator):
    x (field_name).
    / (operator):
        * (operator):
            a (field_name).
            b (field_name).
        c (field_name).

mlr filter -v $x<$a/$b/$c /dev/null
< (operator):
    x (field_name).
    / (operator):
        / (operator):
            a (field_name).
            b (field_name).
        c (field_name).

mlr filter -v $x<$a/$b*$c /dev/null
< (operator):
    x (field_name).
    * (operator):
        / (operator):
            a (field_name).
            b (field_name).
        c (field_name).

mlr filter -v $x<$a+$b+$c /dev/null
< (operator):
    x (field_name).
    + (operator):
        + (operator):
            a (field_name).
            b (field_name).
        c (field_name).

mlr filter -v $x<$a+$b*$c /dev/null
< (operator):
    x (field_name).
    + (operator):
        a (field_name).
        * (operator):
            b (field_name).
            c (field_name).

mlr filter -v $x<$a*$b*$c /dev/null
< (operator):
    x (field_name).
    * (operator):
        * (operator):
            a (field_name).
            b (field_name).
        c (field_name).

mlr filter -v $x<$a*$b+$c /dev/null
< (operator):
    x (field_name).
    + (operator):
        * (operator):
            a (field_name).
            b (field_name).
        c (field_name).

mlr filter -v $x<$a+$b+$c /dev/null
< (operator):
    x (field_name).
    + (operator):
        + (operator):
            a (field_name).
            b (field_name).
        c (field_name).

mlr filter -v $x<$a+$b**$c /dev/null
< (operator):
    x (field_name).
    + (operator):
        a (field_name).
        ** (operator):
            b (field_name).
            c (field_name).

mlr filter -v $x<$a**$b**$c /dev/null
< (operator):
    x (field_name).
    ** (operator):
        ** (operator):
            a (field_name).
            b (field_name).
        c (field_name).

mlr filter -v $x<$a**$b+$c /dev/null
< (operator):
    x (field_name).
    + (operator):
        ** (operator):
            a (field_name).
            b (field_name).
        c (field_name).

mlr filter -v $x<$a.$b.$c /dev/null
< (operator):
    x (field_name).
    . (operator):
        . (operator):
            a (field_name).
            b (field_name).
        c (field_name).

mlr filter -v $x<-$a+$b*$c /dev/null
< (operator):
    x (field_name).
    + (operator):
        - (operator):
            a (field_name).
        * (operator):
            b (field_name).
            c (field_name).

mlr filter -v $x<-$a*$b+$c /dev/null
< (operator):
    x (field_name).
    + (operator):
        * (operator):
            - (operator):
                a (field_name).
            b (field_name).
        c (field_name).

mlr filter -v $x<$a+-$b*$c /dev/null
< (operator):
    x (field_name).
    + (operator):
        a (field_name).
        * (operator):
            - (operator):
                b (field_name).
            c (field_name).

mlr filter -v $x<$a*-$b+$c /dev/null
< (operator):
    x (field_name).
    + (operator):
        * (operator):
            a (field_name).
            - (operator):
                b (field_name).
        c (field_name).

mlr filter -v $x<$a+$b*-$c /dev/null
< (operator):
    x (field_name).
    + (operator):
        a (field_name).
        * (operator):
            b (field_name).
            - (operator):
                c (field_name).

mlr filter -v $x<$a*$b+-$c /dev/null
< (operator):
    x (field_name).
    + (operator):
        * (operator):
            a (field_name).
            b (field_name).
        - (operator):
            c (field_name).

mlr --csvlite put $gmt=sec2gmt($sec) test/input/sec2gmt
sec,gmt
0,1970-01-01T00:00:00Z
1,1970-01-01T00:00:01Z
10,1970-01-01T00:00:10Z
100,1970-01-01T00:01:40Z
1000,1970-01-01T00:16:40Z
10000,1970-01-01T02:46:40Z
100000,1970-01-02T03:46:40Z
1000000,1970-01-12T13:46:40Z
10000000,1970-04-26T17:46:40Z
100000000,1973-03-03T09:46:40Z
1000000000,2001-09-09T01:46:40Z
1432036180,2015-05-19T11:49:40Z
1500000000,2017-07-14T02:40:00Z
2000000000,2033-05-18T03:33:20Z

mlr --csvlite put $sec=gmt2sec($gmt) test/input/gmt2sec
gmt,sec
1970-01-01T00:00:00Z,0
1970-01-01T00:00:01Z,1
1970-01-01T00:00:10Z,10
1970-01-01T00:01:40Z,100
1970-01-01T00:16:40Z,1000
1970-01-01T02:46:40Z,10000
1970-01-02T03:46:40Z,100000
1970-01-12T13:46:40Z,1000000
1970-04-26T17:46:40Z,10000000
1973-03-03T09:46:40Z,100000000
2001-09-09T01:46:40Z,1000000000
2015-05-19T11:49:40Z,1432036180
2017-07-14T02:40:00Z,1500000000
2033-05-18T03:33:20Z,2000000000

mlr put $z=min($x, $y) test/input/minmax.dkvp
x=1,y=2,z=1.000000
x=1,y=,z=1.000000
x=,y=,z=
x=,y=2,z=2.000000
x=3,y=2,z=2.000000
x=3,y=,z=3.000000
x=,y=,z=
x=,y=2,z=2.000000

mlr put $z=max($x, $y) test/input/minmax.dkvp
x=1,y=2,z=2.000000
x=1,y=,z=1.000000
x=,y=,z=
x=,y=2,z=2.000000
x=3,y=2,z=3.000000
x=3,y=,z=3.000000
x=,y=,z=
x=,y=2,z=2.000000

mlr --opprint put $hms=sec2hms($sec);   $resec=hms2sec($hms);   $diff=$resec-$sec test/input/sec2xhms
sec     hms        resec   diff
0       00:00:00   0       0.000000
1       00:00:01   1       0.000000
59      00:00:59   59      0.000000
60      00:01:00   60      0.000000
61      00:01:01   61      0.000000
3599    00:59:59   3599    0.000000
3600    01:00:00   3600    0.000000
3601    01:00:01   3601    0.000000
86399   23:59:59   86399   0.000000
86400   24:00:00   86400   0.000000
86401   24:00:01   86401   0.000000
863999  239:59:59  863999  0.000000
864000  240:00:00  864000  0.000000
864001  240:00:01  864001  0.000000
-1      -00:00:01  -1      0.000000
-59     -00:00:59  -59     0.000000
-60     -00:01:00  -60     0.000000
-61     -00:01:01  -61     0.000000
-3599   -00:59:59  -3599   0.000000
-3600   -01:00:00  -3600   0.000000
-3601   -01:00:01  -3601   0.000000
-86399  -23:59:59  -86399  0.000000
-86400  -24:00:00  -86400  0.000000
-86401  -24:00:01  -86401  0.000000
-863999 -239:59:59 -863999 0.000000
-864000 -240:00:00 -864000 0.000000
-864001 -240:00:01 -864001 0.000000

mlr --opprint put $hms=fsec2hms($sec);  $resec=hms2fsec($hms);  $diff=$resec-$sec test/input/fsec2xhms
sec        hms               resec          diff
0.25       0:00:00.250000    0.250000       0.000000
1.25       0:00:01.250000    1.250000       0.000000
59.25      0:00:59.250000    59.250000      0.000000
60.25      0:01:00.250000    60.250000      0.000000
61.25      0:01:01.250000    61.250000      0.000000
3599.25    0:59:59.250000    3599.250000    0.000000
3600.25    1:00:00.250000    3600.250000    0.000000
3601.25    1:00:01.250000    3601.250000    0.000000
86399.25   23:59:59.250000   86399.250000   0.000000
86400.25   24:00:00.250000   86400.250000   0.000000
86401.25   24:00:01.250000   86401.250000   0.000000
863999.25  239:59:59.250000  863999.250000  0.000000
864000.25  240:00:00.250000  864000.250000  0.000000
864001.25  240:00:01.250000  864001.250000  0.000000
-0.25      -00:00:00.250000  -0.250000      0.000000
-1.25      -00:00:01.250000  -1.250000      0.000000
-59.25     -00:00:59.250000  -59.250000     0.000000
-60.25     -00:01:00.250000  -60.250000     0.000000
-61.25     -00:01:01.250000  -61.250000     0.000000
-3599.25   -00:59:59.250000  -3599.250000   0.000000
-3600.25   -01:00:00.250000  -3600.250000   0.000000
-3601.25   -01:00:01.250000  -3601.250000   0.000000
-86399.25  -23:59:59.250000  -86399.250000  0.000000
-86400.25  -24:00:00.250000  -86400.250000  0.000000
-86401.25  -24:00:01.250000  -86401.250000  0.000000
-863999.25 -239:59:59.250000 -863999.250000 0.000000
-864000.25 -240:00:00.250000 -864000.250000 0.000000
-864001.25 -240:00:01.250000 -864001.250000 0.000000

mlr --opprint put $hms=sec2dhms($sec);  $resec=dhms2sec($hms);  $diff=$resec-$sec test/input/sec2xhms
sec     hms           resec   diff
0       0s            0       0.000000
1       1s            1       0.000000
59      59s           59      0.000000
60      1m00s         60      0.000000
61      1m01s         61      0.000000
3599    59m59s        3599    0.000000
3600    1h00m00s      3600    0.000000
3601    1h00m01s      3601    0.000000
86399   23h59m59s     86399   0.000000
86400   1d00h00m00s   86400   0.000000
86401   1d00h00m01s   86401   0.000000
863999  9d23h59m59s   863999  0.000000
864000  10d00h00m00s  864000  0.000000
864001  10d00h00m01s  864001  0.000000
-1      -1s           -1      0.000000
-59     -59s          -59     0.000000
-60     -1m00s        -60     0.000000
-61     -1m01s        -61     0.000000
-3599   -59m59s       -3599   0.000000
-3600   -1h00m00s     -3600   0.000000
-3601   -1h00m01s     -3601   0.000000
-86399  -23h59m59s    -86399  0.000000
-86400  -1d00h00m00s  -86400  0.000000
-86401  -1d00h00m01s  -86401  0.000000
-863999 -9d23h59m59s  -863999 0.000000
-864000 -10d00h00m00s -864000 0.000000
-864001 -10d00h00m01s -864001 0.000000

mlr --opprint put $hms=fsec2dhms($sec); $resec=dhms2fsec($hms); $diff=$resec-$sec test/input/fsec2xhms
sec        hms                  resec          diff
0.25       0.250000s            0.250000       0.000000
1.25       1.250000s            1.250000       0.000000
59.25      59.250000s           59.250000      0.000000
60.25      1m00.250000s         60.250000      0.000000
61.25      1m01.250000s         61.250000      0.000000
3599.25    59m59.250000s        3599.250000    0.000000
3600.25    1h00m00.250000s      3600.250000    0.000000
3601.25    1h00m01.250000s      3601.250000    0.000000
86399.25   23h59m59.250000s     86399.250000   0.000000
86400.25   1d00h00m00.250000s   86400.250000   0.000000
86401.25   1d00h00m01.250000s   86401.250000   0.000000
863999.25  9d23h59m59.250000s   863999.250000  0.000000
864000.25  10d00h00m00.250000s  864000.250000  0.000000
864001.25  10d00h00m01.250000s  864001.250000  0.000000
-0.25      -0.250000s           -0.250000      0.000000
-1.25      -1.250000s           -1.250000      0.000000
-59.25     -59.250000s          -59.250000     0.000000
-60.25     -1m00.250000s        -60.250000     0.000000
-61.25     -1m01.250000s        -61.250000     0.000000
-3599.25   -59m59.250000s       -3599.250000   0.000000
-3600.25   -1h00m00.250000s     -3600.250000   0.000000
-3601.25   -1h00m01.250000s     -3601.250000   0.000000
-86399.25  -23h59m59.250000s    -86399.250000  0.000000
-86400.25  -1d00h00m00.250000s  -86400.250000  0.000000
-86401.25  -1d00h00m01.250000s  -86401.250000  0.000000
-863999.25 -9d23h59m59.250000s  -863999.250000 0.000000
-864000.25 -10d00h00m00.250000s -864000.250000 0.000000
-864001.25 -10d00h00m01.250000s -864001.250000 0.000000


================================================================
CHAINING

mlr cat then cat test/input/short
a=1
b=2
c=3

mlr cat then tac test/input/short
c=3
b=2
a=1

mlr tac then cat test/input/short
c=3
b=2
a=1

mlr tac then tac test/input/short
a=1
b=2
c=3

mlr cat then cat then cat test/input/short
a=1
b=2
c=3

mlr cat then cat then tac test/input/short
c=3
b=2
a=1

mlr cat then tac then cat test/input/short
c=3
b=2
a=1

mlr cat then tac then tac test/input/short
a=1
b=2
c=3

mlr tac then cat then cat test/input/short
c=3
b=2
a=1

mlr tac then cat then tac test/input/short
a=1
b=2
c=3

mlr tac then tac then cat test/input/short
a=1
b=2
c=3

mlr tac then tac then tac test/input/short
c=3
b=2
a=1


================================================================
HET-CSV INPUT

mlr --icsvlite --odkvp cat test/input/a.csv
a=1,b=2,c=3
a=4,b=5,c=6

mlr --icsvlite --odkvp cat test/input/b.csv
d=5,e=6,f=7

mlr --icsvlite --odkvp cat test/input/c.csv
a=1,b=2,c=3
a=4,b=5,c=6
a=7,b=8,c=9

mlr --icsvlite --odkvp cat test/input/d.csv
h=3,i=4,j=5
m=8,n=9,o=10

mlr --icsvlite --odkvp cat test/input/e.csv
a=1,b=2,c=3
a=4,b=5,c=6

mlr --icsvlite --odkvp cat test/input/f.csv

mlr --icsvlite --odkvp cat test/input/g.csv

mlr --icsvlite --odkvp cat test/input/a.csv test/input/a.csv
a=1,b=2,c=3
a=4,b=5,c=6
a=1,b=2,c=3
a=4,b=5,c=6

mlr --icsvlite --odkvp cat test/input/b.csv test/input/b.csv
d=5,e=6,f=7
d=5,e=6,f=7

mlr --icsvlite --odkvp cat test/input/c.csv test/input/c.csv
a=1,b=2,c=3
a=4,b=5,c=6
a=7,b=8,c=9
a=1,b=2,c=3
a=4,b=5,c=6
a=7,b=8,c=9

mlr --icsvlite --odkvp cat test/input/d.csv test/input/d.csv
h=3,i=4,j=5
m=8,n=9,o=10
h=3,i=4,j=5
m=8,n=9,o=10

mlr --icsvlite --odkvp cat test/input/e.csv test/input/e.csv
a=1,b=2,c=3
a=4,b=5,c=6
a=1,b=2,c=3
a=4,b=5,c=6

mlr --icsvlite --odkvp cat test/input/f.csv test/input/f.csv

mlr --icsvlite --odkvp cat test/input/g.csv test/input/g.csv

mlr --icsvlite --odkvp cat test/input/a.csv test/input/b.csv
a=1,b=2,c=3
a=4,b=5,c=6
d=5,e=6,f=7

mlr --icsvlite --odkvp cat test/input/b.csv test/input/c.csv
d=5,e=6,f=7
a=1,b=2,c=3
a=4,b=5,c=6
a=7,b=8,c=9

mlr --icsvlite --odkvp cat test/input/c.csv test/input/d.csv
a=1,b=2,c=3
a=4,b=5,c=6
a=7,b=8,c=9
h=3,i=4,j=5
m=8,n=9,o=10

mlr --icsvlite --odkvp cat test/input/d.csv test/input/e.csv
h=3,i=4,j=5
m=8,n=9,o=10
a=1,b=2,c=3
a=4,b=5,c=6

mlr --icsvlite --odkvp cat test/input/e.csv test/input/f.csv
a=1,b=2,c=3
a=4,b=5,c=6

mlr --icsvlite --odkvp cat test/input/f.csv test/input/g.csv

mlr --icsvlite --odkvp cat test/input/a.csv test/input/b.csv test/input/c.csv test/input/d.csv test/input/e.csv test/input/f.csv test/input/g.csv
a=1,b=2,c=3
a=4,b=5,c=6
d=5,e=6,f=7
a=1,b=2,c=3
a=4,b=5,c=6
a=7,b=8,c=9
h=3,i=4,j=5
m=8,n=9,o=10
a=1,b=2,c=3
a=4,b=5,c=6

mlr --icsvlite --odkvp tac test/input/het.csv
resource=/some/other/path,loadsec=0.97,ok=false
record_count=150,resource=/path/to/second/file
resource=/path/to/second/file,loadsec=0.32,ok=true
record_count=100,resource=/path/to/file
resource=/path/to/file,loadsec=0.45,ok=true


================================================================
HET-PPRINT INPUT

mlr --ipprint --odkvp cat test/input/a.pprint
a=1,b=2,c=3
a=4,b=5,c=6

mlr --ipprint --odkvp cat test/input/b.pprint
d=5,e=6,f=7

mlr --ipprint --odkvp cat test/input/c.pprint
a=1,b=2,c=3
a=4,b=5,c=6
a=7,b=8,c=9

mlr --ipprint --odkvp cat test/input/d.pprint
h=3,i=4,j=5
m=8,n=9,o=10

mlr --ipprint --odkvp cat test/input/e.pprint
a=1,b=2,c=3
a=4,b=5,c=6

mlr --ipprint --odkvp cat test/input/f.pprint

mlr --ipprint --odkvp cat test/input/g.pprint

mlr --ipprint --odkvp cat test/input/a.pprint test/input/a.pprint
a=1,b=2,c=3
a=4,b=5,c=6
a=1,b=2,c=3
a=4,b=5,c=6

mlr --ipprint --odkvp cat test/input/b.pprint test/input/b.pprint
d=5,e=6,f=7
d=5,e=6,f=7

mlr --ipprint --odkvp cat test/input/c.pprint test/input/c.pprint
a=1,b=2,c=3
a=4,b=5,c=6
a=7,b=8,c=9
a=1,b=2,c=3
a=4,b=5,c=6
a=7,b=8,c=9

mlr --ipprint --odkvp cat test/input/d.pprint test/input/d.pprint
h=3,i=4,j=5
m=8,n=9,o=10
h=3,i=4,j=5
m=8,n=9,o=10

mlr --ipprint --odkvp cat test/input/e.pprint test/input/e.pprint
a=1,b=2,c=3
a=4,b=5,c=6
a=1,b=2,c=3
a=4,b=5,c=6

mlr --ipprint --odkvp cat test/input/f.pprint test/input/f.pprint

mlr --ipprint --odkvp cat test/input/g.pprint test/input/g.pprint

mlr --ipprint --odkvp cat test/input/a.pprint test/input/b.pprint
a=1,b=2,c=3
a=4,b=5,c=6
d=5,e=6,f=7

mlr --ipprint --odkvp cat test/input/b.pprint test/input/c.pprint
d=5,e=6,f=7
a=1,b=2,c=3
a=4,b=5,c=6
a=7,b=8,c=9

mlr --ipprint --odkvp cat test/input/c.pprint test/input/d.pprint
a=1,b=2,c=3
a=4,b=5,c=6
a=7,b=8,c=9
h=3,i=4,j=5
m=8,n=9,o=10

mlr --ipprint --odkvp cat test/input/d.pprint test/input/e.pprint
h=3,i=4,j=5
m=8,n=9,o=10
a=1,b=2,c=3
a=4,b=5,c=6

mlr --ipprint --odkvp cat test/input/e.pprint test/input/f.pprint
a=1,b=2,c=3
a=4,b=5,c=6

mlr --ipprint --odkvp cat test/input/f.pprint test/input/g.pprint

mlr --ipprint --odkvp cat test/input/a.pprint test/input/b.pprint test/input/c.pprint test/input/d.pprint test/input/e.pprint test/input/f.pprint test/input/g.pprint
a=1,b=2,c=3
a=4,b=5,c=6
d=5,e=6,f=7
a=1,b=2,c=3
a=4,b=5,c=6
a=7,b=8,c=9
h=3,i=4,j=5
m=8,n=9,o=10
a=1,b=2,c=3
a=4,b=5,c=6


================================================================
NULL-FIELD INPUT

mlr --icsvlite --odkvp cat test/input/null-fields.csv
a=1,b=2,c=3,d=4,e=5
a=6,b=,c=,d=,e=10
a=,b=,c=,d=11,e=12
a=13,b=14,c=,d=,e=
a=,b=,c=,d=,e=

mlr --inidx --ifs comma --odkvp cat test/input/null-fields.nidx
1=a,2=b,3=c,4=d,5=e
1=f,2=,3=,4=,5=g
1=,2=,3=,4=h,5=i
1=j,2=k,3=,4=,5=
1=,2=,3=,4=,5=

mlr --idkvp --oxtab cat test/input/missings.dkvp
a 1
b 2
c 3
d 4
e 5
f 6

1 a
b 
x 4
c 3
5 d
6 e
7 f

1 a
b 
x 4
c 3
5 d
6 e
f 6


================================================================
SPACE-PADDING

mlr --mmap --idkvp --odkvp --ifs space --repifs cat test/input/space-pad.dkvp
a=1,b=2
c=3

mlr --no-mmap --idkvp --odkvp --ifs space --repifs cat test/input/space-pad.dkvp
a=1,b=2
c=3

mlr --mmap --inidx --odkvp --ifs space --repifs cat test/input/space-pad.nidx
1=a,2=b,3=c
1=d,2=e,3=f

mlr --no-mmap --inidx --odkvp --ifs space --repifs cat test/input/space-pad.nidx
1=a,2=b,3=c
1=d,2=e,3=f

mlr --mmap --icsvlite --odkvp --ifs space --repifs cat test/input/space-pad.pprint
a=1,b=2,c=3

mlr --no-mmap --icsvlite --odkvp --ifs space --repifs cat test/input/space-pad.pprint
a=1,b=2,c=3


================================================================
DOUBLE PS

mlr --no-mmap --opprint cat test/input/double-ps.dkvp
a   b    c
pan wy.e 3
pan wy=e 3

mlr --mmap --opprint cat test/input/double-ps.dkvp
a   b    c
pan wy.e 3
pan wy=e 3


================================================================
MISSING FINAL LF

mlr --no-mmap --csvlite cat test/input/truncated.csv
a,b,c
1,2,3
4,5,6
7,8,9

mlr --csvlite cat test/input/truncated.csv
a,b,c
1,2,3
4,5,6
7,8,9

mlr --no-mmap --dkvp cat test/input/truncated.dkvp
a=1,b=2
c=3

mlr --dkvp cat test/input/truncated.dkvp
a=1,b=2
c=3

mlr --no-mmap --nidx cat test/input/truncated.nidx
1 2 3
4 5

mlr --nidx cat test/input/truncated.nidx
1 2 3
4 5

mlr --no-mmap --pprint cat test/input/truncated.pprint
a b c
1 2 3
4 5 6
7 8 9

mlr --pprint cat test/input/truncated.pprint
a b c
1 2 3
4 5 6
7 8 9

mlr --no-mmap --xtab cat test/input/truncated.xtab
a 1
b 2
c 3

d 4
e 5

mlr --xtab cat test/input/truncated.xtab
a 1
b 2
c 3

d 4
e 5


================================================================
UTF-8 alignment

mlr --icsvlite --opprint cat test/input/utf8-1.csv
langue   nom      jour
français françois vendredi

mlr --icsvlite --opprint cat test/input/utf8-2.csv
français françois vendredi
langue   nom      jour

mlr --icsvlite --oxtab cat test/input/utf8-1.csv
langue français
nom    françois
jour   vendredi

mlr --icsvlite --oxtab cat test/input/utf8-2.csv
français langue
françois nom
vendredi jour

mlr --inidx --ifs space --opprint cat test/input/utf8-align.nidx
1        2
191º     test
191      test2
francois français
françois francais

mlr --inidx --ifs space --opprint --right cat test/input/utf8-align.nidx
       1        2
    191º     test
     191    test2
francois français
françois francais

mlr --oxtab cat test/input/utf8-align.dkvp
191º test
1912 test2
cois çais
çois cais

191º test
1912 test2
ois  çais
çois cais

191º  test
1912  test2
coise çais
çois  cais


================================================================
STDIN

mlr --csv cat
a,b,c
1,x,3
4,5,6
x,y"yy,z


================================================================
RFC-CSV

mlr --csv cat test/input/rfc-csv/simple.csv
a,b,c
1,x,3
4,5,6
x,y"yy,z

mlr --csv cat test/input/rfc-csv/simple-truncated.csv
a,b,c
1,x,3
4,5,6

mlr --csv cat test/input/rfc-csv/narrow.csv
a
1
2
3
4

mlr --csv cat test/input/rfc-csv/narrow-truncated.csv
a
1
2
3
4

mlr --csv cat test/input/rfc-csv/quoted-comma.csv
a,b,c
1,"x,3",y
4,5,6

mlr --csv cat test/input/rfc-csv/quoted-comma-truncated.csv
a,b,c
1,"x,3",y
4,5,6

mlr --csv cat test/input/rfc-csv/quoted-crlf.csv
a,b,c
1,"x
3",y
4,5,6

mlr --csv cat test/input/rfc-csv/quoted-crlf-truncated.csv
a,b,c
1,"x
3",y
4,5,6

mlr --csv cat test/input/rfc-csv/simple-truncated.csv test/input/rfc-csv/simple.csv
a,b,c
1,x,3
4,5,6
1,x,3
4,5,6
x,y"yy,z

mlr --csv --ifs semicolon --ofs pipe --irs lf --ors lflf cut -x -f b test/input/rfc-csv/modify-defaults.csv
a|c

1|3

4|6



================================================================
MULTI-CHARACTER IRS/IFS/IPS FOR DKVP

mlr --oxtab --idkvp --mmap --irs lf --ifs , --ips = cut -o -f x,a,i test/input/multi-sep.dkvp
x :0.641593543645736508/
a :wye/
i :0/

x :0.827614412562742041/
a :eks/
i :1/

x :0.923068348748175560/
a :zee/
i :2/

x :0.000047786161325772/
a :zee/
i :3/

x :0.676537984365847889/
a :zee/
i :4/

mlr --oxtab --idkvp --mmap --irs lf --ifs /, --ips =: cut -o -f x,a,i test/input/multi-sep.dkvp
x 0.641593543645736508
a wye
i 0

x 0.827614412562742041
a eks
i 1

x 0.923068348748175560
a zee
i 2

x 0.000047786161325772
a zee
i 3

x 0.676537984365847889
a zee
i 4

mlr --oxtab --idkvp --mmap --irs crlf --ifs , --ips = cut -o -f x,a,i test/input/multi-sep.dkvp
x :0.641593543645736508/
a :wye/
i :0/

x :0.827614412562742041/
a :eks/
i :1/

x :0.923068348748175560/
a :zee/
i :2/

x :0.000047786161325772/
a :zee/
i :3/

x :0.676537984365847889/
a :zee/
i :4/

mlr --oxtab --idkvp --mmap --irs crlf --ifs /, --ips =: cut -o -f x,a,i test/input/multi-sep.dkvp
x 0.641593543645736508
a wye
i 0

x 0.827614412562742041
a eks
i 1

x 0.923068348748175560
a zee
i 2

x 0.000047786161325772
a zee
i 3

x 0.676537984365847889
a zee
i 4

mlr --oxtab --no-mmap --irs lf --ifs , --ips = cut -o -f x,a,i test/input/multi-sep.dkvp
x :0.641593543645736508/
a :wye/
i :0/

x :0.827614412562742041/
a :eks/
i :1/

x :0.923068348748175560/
a :zee/
i :2/

x :0.000047786161325772/
a :zee/
i :3/

x :0.676537984365847889/
a :zee/
i :4/

mlr --oxtab --no-mmap --irs lf --ifs /, --ips =: cut -o -f x,a,i test/input/multi-sep.dkvp
x 0.641593543645736508
a wye
i 0

x 0.827614412562742041
a eks
i 1

x 0.923068348748175560
a zee
i 2

x 0.000047786161325772
a zee
i 3

x 0.676537984365847889
a zee
i 4

mlr --oxtab --no-mmap --irs crlf --ifs , --ips = cut -o -f x,a,i test/input/multi-sep.dkvp
x :0.641593543645736508/
a :wye/
i :0/

x :0.827614412562742041/
a :eks/
i :1/

x :0.923068348748175560/
a :zee/
i :2/

x :0.000047786161325772/
a :zee/
i :3/

x :0.676537984365847889/
a :zee/
i :4/

mlr --oxtab --no-mmap --irs crlf --ifs /, --ips =: cut -o -f x,a,i test/input/multi-sep.dkvp
x 0.641593543645736508
a wye
i 0

x 0.827614412562742041
a eks
i 1

x 0.923068348748175560
a zee
i 2

x 0.000047786161325772
a zee
i 3

x 0.676537984365847889
a zee
i 4


================================================================
MULTI-CHARACTER IRS/IFS FOR NIDX

mlr --oxtab --inidx --mmap --irs lf --ifs , cut -o -f 4,1,3 test/input/multi-sep.dkvp
4 x=:0.641593543645736508/
1 a=:wye/
3 i=:0/

4 x=:0.827614412562742041/
1 a=:eks/
3 i=:1/

4 x=:0.923068348748175560/
1 a=:zee/
3 i=:2/

4 x=:0.000047786161325772/
1 a=:zee/
3 i=:3/

4 x=:0.676537984365847889/
1 a=:zee/
3 i=:4/

mlr --oxtab --inidx --mmap --irs lf --ifs /, cut -o -f 4,1,3 test/input/multi-sep.dkvp
4 x=:0.641593543645736508
1 a=:wye
3 i=:0

4 x=:0.827614412562742041
1 a=:eks
3 i=:1

4 x=:0.923068348748175560
1 a=:zee
3 i=:2

4 x=:0.000047786161325772
1 a=:zee
3 i=:3

4 x=:0.676537984365847889
1 a=:zee
3 i=:4

mlr --oxtab --inidx --mmap --irs crlf --ifs , cut -o -f 4,1,3 test/input/multi-sep.dkvp
4 x=:0.641593543645736508/
1 a=:wye/
3 i=:0/

4 x=:0.827614412562742041/
1 a=:eks/
3 i=:1/

4 x=:0.923068348748175560/
1 a=:zee/
3 i=:2/

4 x=:0.000047786161325772/
1 a=:zee/
3 i=:3/

4 x=:0.676537984365847889/
1 a=:zee/
3 i=:4/

mlr --oxtab --inidx --mmap --irs crlf --ifs /, cut -o -f 4,1,3 test/input/multi-sep.dkvp
4 x=:0.641593543645736508
1 a=:wye
3 i=:0

4 x=:0.827614412562742041
1 a=:eks
3 i=:1

4 x=:0.923068348748175560
1 a=:zee
3 i=:2

4 x=:0.000047786161325772
1 a=:zee
3 i=:3

4 x=:0.676537984365847889
1 a=:zee
3 i=:4

mlr --oxtab --inidx --no-mmap --irs lf --ifs , cut -o -f 4,1,3 test/input/multi-sep.dkvp
4 x=:0.641593543645736508/
1 a=:wye/
3 i=:0/

4 x=:0.827614412562742041/
1 a=:eks/
3 i=:1/

4 x=:0.923068348748175560/
1 a=:zee/
3 i=:2/

4 x=:0.000047786161325772/
1 a=:zee/
3 i=:3/

4 x=:0.676537984365847889/
1 a=:zee/
3 i=:4/

mlr --oxtab --inidx --no-mmap --irs lf --ifs /, cut -o -f 4,1,3 test/input/multi-sep.dkvp
4 x=:0.641593543645736508
1 a=:wye
3 i=:0

4 x=:0.827614412562742041
1 a=:eks
3 i=:1

4 x=:0.923068348748175560
1 a=:zee
3 i=:2

4 x=:0.000047786161325772
1 a=:zee
3 i=:3

4 x=:0.676537984365847889
1 a=:zee
3 i=:4

mlr --oxtab --inidx --no-mmap --irs crlf --ifs , cut -o -f 4,1,3 test/input/multi-sep.dkvp
4 x=:0.641593543645736508/
1 a=:wye/
3 i=:0/

4 x=:0.827614412562742041/
1 a=:eks/
3 i=:1/

4 x=:0.923068348748175560/
1 a=:zee/
3 i=:2/

4 x=:0.000047786161325772/
1 a=:zee/
3 i=:3/

4 x=:0.676537984365847889/
1 a=:zee/
3 i=:4/

mlr --oxtab --inidx --no-mmap --irs crlf --ifs /, cut -o -f 4,1,3 test/input/multi-sep.dkvp
4 x=:0.641593543645736508
1 a=:wye
3 i=:0

4 x=:0.827614412562742041
1 a=:eks
3 i=:1

4 x=:0.923068348748175560
1 a=:zee
3 i=:2

4 x=:0.000047786161325772
1 a=:zee
3 i=:3

4 x=:0.676537984365847889
1 a=:zee
3 i=:4


================================================================
MULTI-CHARACTER IRS/IFS FOR CSVLITE

mlr --oxtab --icsvlite --mmap --irs lf --ifs , cut -o -f x/,a/,i/ test/input/multi-sep.csvl
x/ 0.641593543645736508/
a/ wye/
i/ 0/

x/ 0.827614412562742041/
a/ eks/
i/ 1/

x/ 0.923068348748175560/
a/ zee/
i/ 2/

x/ 0.000047786161325772/
a/ zee/
i/ 3/

x/ 0.676537984365847889/
a/ zee/
i/ 4/

mlr --oxtab --icsvlite --mmap --irs lf --ifs /, cut -o -f x,a,i test/input/multi-sep.csvl
x 0.641593543645736508
a wye
i 0

x 0.827614412562742041
a eks
i 1

x 0.923068348748175560
a zee
i 2

x 0.000047786161325772
a zee
i 3

x 0.676537984365847889
a zee
i 4

mlr --oxtab --icsvlite --mmap --irs crlf --ifs , cut -o -f x/,a/,i/ test/input/multi-sep.csvl
x/ 0.641593543645736508/
a/ wye/
i/ 0/

x/ 0.827614412562742041/
a/ eks/
i/ 1/

x/ 0.923068348748175560/
a/ zee/
i/ 2/

x/ 0.000047786161325772/
a/ zee/
i/ 3/

x/ 0.676537984365847889/
a/ zee/
i/ 4/

mlr --oxtab --icsvlite --mmap --irs crlf --ifs /, cut -o -f x,a,i test/input/multi-sep.csvl
x 0.641593543645736508
a wye
i 0

x 0.827614412562742041
a eks
i 1

x 0.923068348748175560
a zee
i 2

x 0.000047786161325772
a zee
i 3

x 0.676537984365847889
a zee
i 4

mlr --oxtab --icsvlite --no-mmap --irs lf --ifs , cut -o -f x/,a/,i/ test/input/multi-sep.csvl
x/ 0.641593543645736508/
a/ wye/
i/ 0/

x/ 0.827614412562742041/
a/ eks/
i/ 1/

x/ 0.923068348748175560/
a/ zee/
i/ 2/

x/ 0.000047786161325772/
a/ zee/
i/ 3/

x/ 0.676537984365847889/
a/ zee/
i/ 4/

mlr --oxtab --icsvlite --no-mmap --irs lf --ifs /, cut -o -f x,a,i test/input/multi-sep.csvl
x 0.641593543645736508
a wye
i 0

x 0.827614412562742041
a eks
i 1

x 0.923068348748175560
a zee
i 2

x 0.000047786161325772
a zee
i 3

x 0.676537984365847889
a zee
i 4

mlr --oxtab --icsvlite --no-mmap --irs crlf --ifs , cut -o -f x/,a/,i/ test/input/multi-sep.csvl
x/ 0.641593543645736508/
a/ wye/
i/ 0/

x/ 0.827614412562742041/
a/ eks/
i/ 1/

x/ 0.923068348748175560/
a/ zee/
i/ 2/

x/ 0.000047786161325772/
a/ zee/
i/ 3/

x/ 0.676537984365847889/
a/ zee/
i/ 4/

mlr --oxtab --icsvlite --no-mmap --irs crlf --ifs /, cut -o -f x,a,i test/input/multi-sep.csvl
x 0.641593543645736508
a wye
i 0

x 0.827614412562742041
a eks
i 1

x 0.923068348748175560
a zee
i 2

x 0.000047786161325772
a zee
i 3

x 0.676537984365847889
a zee
i 4


================================================================
MULTI-CHARACTER IFS FOR XTAB

mlr --mmap --xtab --ifs crlf --ofs Z cut -x -f b test/input/truncated.xtab-crlf
a 1Zc 3ZZd 4Ze 5Z
mlr --no-mmap --xtab --ifs crlf --ofs Z cut -x -f b test/input/truncated.xtab-crlf
a 1Zc 3ZZd 4Ze 5Z
mlr --mmap --xtab --ips . --ops @ cut -x -f b test/input/dots.xtab
a@1
c@345

defg@6
hi@@@78

mlr --no-mmap --xtab --ips . --ops @ cut -x -f b test/input/dots.xtab
a@1
c@345

defg@6
hi@@@78


================================================================
MULTI-CHARACTER IRS FOR PPRINT

mlr --mmap --pprint --irs crlf --ifs / --ofs @ cut -x -f b test/input/dots.pprint
a@@@i@@x@@@@@@@@@@@@@@@@@@@y
pan@1@@0.3467901443380824@@0.7268028627434533
eks@2@@0.7586799647899636@@0.5221511083334797
wye@3@@0.20460330576630303@0.33831852551664776
eks@4@@0.38139939387114097@0.13418874328430463
wye@5@@0.5732889198020006@@0.8636244699032729
zee@6@@0.5271261600918548@@0.49322128674835697
eks@7@@0.6117840605678454@@0.1878849191181694
zee@8@@0.5985540091064224@@0.976181385699006
hat@9@@0.03144187646093577@0.7495507603507059
pan@10@0.5026260055412137@@0.9526183602969864

mlr --no-mmap --pprint --irs crlf --ifs / --ofs @ cut -x -f b test/input/dots.pprint
a@@@i@@x@@@@@@@@@@@@@@@@@@@y
pan@1@@0.3467901443380824@@0.7268028627434533
eks@2@@0.7586799647899636@@0.5221511083334797
wye@3@@0.20460330576630303@0.33831852551664776
eks@4@@0.38139939387114097@0.13418874328430463
wye@5@@0.5732889198020006@@0.8636244699032729
zee@6@@0.5271261600918548@@0.49322128674835697
eks@7@@0.6117840605678454@@0.1878849191181694
zee@8@@0.5985540091064224@@0.976181385699006
hat@9@@0.03144187646093577@0.7495507603507059
pan@10@0.5026260055412137@@0.9526183602969864


================================================================
MULTI-CHARACTER IXS SPECIFIERS

mlr --oxtab --idkvp --mmap --irs lf --ifs , --ips = cut -o -f x,a,i test/input/multi-sep.dkvp
x :0.641593543645736508/
a :wye/
i :0/

x :0.827614412562742041/
a :eks/
i :1/

x :0.923068348748175560/
a :zee/
i :2/

x :0.000047786161325772/
a :zee/
i :3/

x :0.676537984365847889/
a :zee/
i :4/

mlr --oxtab --idkvp --mmap --irs lf --ifs /, --ips =: cut -o -f x,a,i test/input/multi-sep.dkvp
x 0.641593543645736508
a wye
i 0

x 0.827614412562742041
a eks
i 1

x 0.923068348748175560
a zee
i 2

x 0.000047786161325772
a zee
i 3

x 0.676537984365847889
a zee
i 4

