如何进行命令替换,例如plumbum中的“echo hi | tee>(gzip>/tmp/1)>/tmp/2”?

2024-06-01 19:43:39 发布

您现在位置:Python中文网/ 问答频道 /正文

我需要弄清楚如何在plumbum中调用管道替换。具体来说,如何构造链,比如echo hi | tee >( gzip > /tmp/1 ) > /tmp/2?或者,为了更好地说明这个想法,find / | tee >( grep hi > /tmp/grepped ) > /tmp/nongrepped?我需要这种方法,因为我将要使用的find /的等价物运行起来非常昂贵,而且我无法将其保存在磁盘上,所以我需要并行应用两个不同的过滤器。有没有办法避免mkfifo?你知道吗

注意:我知道这个问题类似于“How to pipe many bash commands from python?”。不过,不同的是,我问的是关于铅和试图写一个铅相关的答案是有缺陷的,如其评论所述。你知道吗


Tags: 方法echo过滤器管道findhigreptmp
1条回答
网友
1楼 · 发布于 2024-06-01 19:43:39

要复制问题标题(echo hi | tee >( gzip > /tmp/1 ) > /tmp/2)中的命令,可以使用plumbum执行以下操作

from plumbum.cmd import echo, tee, gzip

(echo["hi"] | tee["/tmp/2"] | gzip > "/tmp/1")()

这将字符串“hi”通过管道传输到tee函数,该函数将其写入“/tmp/2”,并将其复制到stdout。然后,stdout通过管道传输到gzip,gzip的输出被重定向到“/tmp/1”。你知道吗

实现与其他命令类似的功能(find / | tee >( grep hi > /tmp/grepped ) > /tmp/nongrepped

你可以做:

from plumbum.cmd import find, grep, tee

(find["/"] | tee["/tmp/nongrepped"] | grep["hi"] > "/tmp/grepped")()

相关问题 更多 >