bash - 是否可以将 STDIN 分布到并行进程中?

标签 bash process parallel-processing stdin xargs

在 STDIN 上给出以下示例输入:

foo
bar bar
baz
===
qux
bla
===
def
zzz yyy

是否可以在分隔符上拆分它(在本例中为“===”)并通过标准输入将其提供给并行运行的命令?

因此,上面的示例输入将导致 3 个并行进程(例如名为 do.sh 的命令),其中每个实例都在 STDIN 上接收部分数据,如下所示:

do.sh(实例 1)通过 STDIN 接收:

foo
bar bar
baz

do.sh(实例 2)通过 STDIN 接收:

qux
bla

do.sh(实例 3)通过 STDIN 接收:

def
zzz yyy

我想这样的事情可以使用 xargs 或 GNU parallel,但我不知道怎么做。

最佳答案

GNU Parallel 从版本 20110205 开始可以做到这一点。

cat | parallel --pipe --recend '===\n' --rrs do_stuff

关于bash - 是否可以将 STDIN 分布到并行进程中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4656927/

相关文章:

linux - 从 bash 脚本运行一些命令

c++ - 我可以将 std::transform 与并行执行策略一起使用吗?

c++ - MPI虚拟拓扑设计

java - 任务间的 OpenCL 共享内存

regex - bash 替换在匹配换行符时似乎不起作用

linux - 使用 sed 和变量剪切日志文件

linux - 我用 0 初始化数组时做错了什么?

Bash:暂停并使用空格键继续执行

ruby-on-rails - Heroku/ruby on Rails...我怎样才能知道我是作为 worker 运行还是作为网络运行

c - 如何从 C 中的程序关闭 gnome 终端屏幕