在 bash 中,有没有办法链接多个命令,所有命令都从标准输入获取相同的输入?也就是说,一个命令读取标准输入,进行一些处理,将输出写入文件。链中的下一个命令获得与第一个命令相同的输入。等等。
例如,考虑通过过滤内容将大文本文件拆分为多个文件。像这样的东西:
cat food_expenses.txt | grep "coffee" > coffee.txt | grep "tea" > tea.txt | grep "honey cake" > cake.txt
这显然不起作用,因为第二个 grep 获取第一个 grep 的输出,而不是原始文本文件。我尝试插入三通,但这没有帮助。是否有一些 bash 魔法可以导致第一个 grep 将其输入发送到管道,而不是输出?
顺便说一句,拆分文件是一个简单的例子。考虑拆分(通过模式搜索归档)来自网络的连续实时文本流并将输出写入不同的命名管道或套接字。我想知道是否有一种使用 shell 脚本的简单方法。
(这个问题是我之前的一个清理版本,基于指出不明确之处的回复)