乍一看,使用
inputs
和 splits
似乎产生相同的结果:
$ seq 3 | jq -nR 'inputs|tonumber'
1
2
3
$ seq 3 | jq -R 'splits("\n")|tonumber'
1
2
3
但是当我尝试减少输入时,
inputs
起作用了:
$ seq 3 | jq -nR 'reduce inputs as $_ (0; . + ($_|tonumber))'
6
但是
splits
不起作用:
$ seq 3 | jq -R 'reduce splits("\n") as $_ (0; . + ($_|tonumber))'
1
2
3
为什么
splits
不起作用?
seq 3 | jq -R 'splits("\n")|tonumber'
实际上产生三个输入,而 splits
不执行任何操作。也许您打算跑步seq 3 | jq -Rs 'splits("\n")|tonumber'
。 jq -Rs
生成一个字符串,中间有换行符。