将每行标准输出作为标准输入传递给工具的新调用

问题描述 投票:0回答:1

我想将

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 似乎无法将东西作为标准输出和

bash pipe stdin xargs gnu-parallel
1个回答
2
投票

awk
可能就足够了:

awk '{ print | "jj" }' out.ndjson
© www.soinside.com 2019 - 2024. All rights reserved.