gpt4 book ai didi

bash - 我可以链接多个命令并使它们都从标准输入获取相同的输入吗?

转载 作者:行者123 更新时间:2023-11-29 09:33:14 25 4
gpt4 key购买 nike

在 bash 中,有没有一种方法可以链接多个命令,所有命令都从 stdin 获取相同的输入?也就是说,一个命令读取标准输入,进行一些处理,然后将输出写入文件。链中的下一个命令获得与第一个命令获得的输入相同的输入。等等。

例如,考虑通过过滤内容将一个大文本文件拆分为多个文件。像这样:

cat food_expenses.txt | grep "coffee" > coffee.txt | grep "tea" > tea.txt | grep "honey cake" > cake.txt

这显然行不通,因为第二个 grep 获得了第一个 grep 的输出,而不是原始文本文件。我尝试插入T 恤,但这没有帮助。是否有一些 bash 魔法可以导致第一个 grep 将其输入 发送到管道,而不是输出?

顺便说一句,分割文件是一个简单的例子。考虑拆分(通过模式搜索归档)来自网络的连续实时文本流,并将输出写入不同的命名管道或套接字。我想知道是否有使用 shell 脚本的简单方法。

(这个问题是我的 earlier one 的清理版本,基于指出不清楚的回复)

最佳答案

对于这个例子,你应该按照半无用的建议使用 awk。

但通常要让 N 个任意程序读取单个输入流的副本,您可以使用 tee 和 bash 的进程输出替换运算符:

tee <food_expenses.txt \
>(grep "coffee" >coffee.txt) \
>(grep "tea" >tea.txt) \
>(grep "honey cake" >cake.txt)

请注意,>(command) 是一个 bash 扩展。

关于bash - 我可以链接多个命令并使它们都从标准输入获取相同的输入吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/986017/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com