我想将
stdout
的每一行通过管道传输到另一个工具的单独调用的 stdin
- 本质上是在命令行上的 bash 中映射行。
我知道我可以循环,但是对于这样一个简单的任务来说有点冗长,而且速度也很慢:
cat out.ndjson | while read p; do \
echo "$p" | jj key
done
我知道我可以用这样的 API 自己编写一个高性能程序
maplines
:
cat ndjson | maplines jj key
其中
maplines
从 stdin
读取一行并将其通过管道传递给每行 jj key
的新调用。
重要的是
jj key
不能接受该行作为参数。它需要输入为stdin
.
已有工具再重新发明轮子太浪费了。或者可以编写一个 bash 函数。肯定已经存在类似的东西了。
基本上我的问题是:我如何在
maplines
或xargs
中实现parallel
。我研究了很多,但 xargs 似乎无法将东西作为标准输出和
awk
可能就足够了:
awk '{ print | "jj" }' out.ndjson